Парсим админку Мегамаркета с помощью скрытых API
Курс «Python для Продактов и Маркетологов»: python.smysl.io/
СОДЕРЖАНИЕ
00:00 - Начало
00:21 - В прошлых сериях
01:08 - Админка Мегамаркета
03:31 - О внутренних API
04:41 - Находим внутренние API
09:37 - Получаем данные
20:53 - Получаем session_id
30:21 - Заключение
ОБО МНЕ
👋 Привет! Меня зовут Алексей. Я работаю в IT, занимал ключевые позиции в Групоне, Gett, Яндекс-Логистике и Osome. Я люблю преподавать, и у меня получается делать сложные вещи понятными. Хочу помогать людям не бояться нового и понимать, как технологии могут сделать нашу жизнь лучше.
Пікірлер: 137
Походу многие безопасники кликнули по видосу из-за названия)) Тоже подумал про фаззинг
@kulichevskiy
26 күн бұрын
самому теперь интересно, что за фаззинг такой :)
@user-tp5im4ze7d
17 күн бұрын
Реально
@mr.dandomi
11 күн бұрын
жиза
честно говоря, я из другой тематики, ткнул на видос увидев "скрытые api" и подумал что какой-то фаззинг (ffuf, kiterunner) будет, "всё как мы SecOps любим", но оказалось речь про парсинг и "бытовое применение", впрочем сделано видео вполне хорошо, советы: фильтровать XHR запросы, выгружать в HAR (это JSON), ну и там смотреть - scope станет меньше и искать нужное станет легче.
@leonidalexeev4098
16 күн бұрын
7:49 Лайкайте, чтоб знали. В google chrome есть поиск во всех ответах сервера. Включить можно так: Customize and control DevTools > More tools > Search.
Посмотрел, на половине пути поставил лайк. Досмотрел - подписался. Крутая подача, всё понятно по запросам.
Отличный урок, я в восторге!!!! Как раз вчера задумался о 2 проектах, а там как раз нужно делать сбор данных с апи + сессия. Выручил❤️
Отличный контент, здорово что ты захватываешь сразу несколько смежных тем, связанных с основной
Спасибо за видео! Все очень понятно
что же за золотой человек! спасибо
круто!!! спасибо за понятный урок ❤❤❤
я удивлён, насколько всё понятно и спокойно ты объясняешь
Спасибо мне в своих хакерских навыках пригодится, а самое главное так хорошо и отлично поясняешь! Низкий поклон! Подписка👍
В реальности все обычно сложнее, content-length хедер стоило генерировать динамически все-таки, исходя из отправляемого запроса, иначе это не будет работать даже при добавлении одного символа в пароль. И нередко бывает, что сервер пытается защититься от того, что скрытый API использует кто попало, например, с помощью куков, которые вы полностью выкинули из запроса, часто приходится разбираться и с их генерацией и корректной отправкой.
@kulichevskiy
Ай бұрын
Все так. Для решения этой задачи куки, к счастью не понадобились. Иначе пришлось бы их в хедер добавлять тоже. Вообще, конечно, лучше всего извлекать данные, когда у сервиса есть нормальный публичный API. К сожалению, Мегамаркет его пока не сделал :(
@user-hl7ds8uv6b
16 күн бұрын
..
@slavaviktorov6053
13 күн бұрын
"куков...и с их генерацией" что?))) видео достойное своего зрителя) взять умные слова, перемешать и выдать, для хомячков пойдет, они вон на своей стороне куки генерируют, ага это так и работает))
@mediaexplorer74
11 күн бұрын
@@kulichevskiyпервое: не расслышал, где все же Вы живёте. Второе: к сожалению? Не, Сбер просто любит монополию, они вряд ли рады нам..
крутое видео, раскрыло глаза на многое. Спасибо большое
Как??? Как вы узнали, что я гуглили парсинг?) Как не странно, часто когда у меня возникает проблема, вы выпускаете нужное мне видео. Это точно мне поможет! Есть способ парсить гугл запросы подписчиков!?)
Я действительно подумал о том, что ролик Заглянул в комментарии Теперь стало интересно что такое фаззинг 😅
Крутые усы!)
1 - бывает что делают защиту от таких вот любителей)) 2 - бывает что все работает только через токен 3 - бывает что отправляют в апи зашифрованные данные (или отправляют контрольную сумму, которую вычисляют своим специальным алгоритмом UDP: используйте постман для проверки и анализа скрытого апи)) а уже потом в код переносите Думаю тоже как нибудь видос запилить о подводных камнях этого дела))
@kulichevskiy
Ай бұрын
Все так, надо каждый раз разбираться, как работает API, как устроена авторизация и т.п. Про Postman - я его так и не освоил нормально, мне удобнее сразу в код ¯\_(ツ)_/¯
@user-qq7to2gr6k
Ай бұрын
А ещё бывает Cloudflare))).
@apristen
Ай бұрын
для этого есть webdriver же, берёте им "осёдлываете" браузер ну и даже user activity (хаотичные микродвижения мышкой) делаете иногда чтобы "за своего сойти". ещё вариант есть с написанием своего extension для браузера (локальная установка - никого спрашивать разрешения не надо, браузер поддастся, вы же development делаете типа) у extension - весьма широкие полномочия доступа к DOM и не только. оба метода выше - это как в том анекдоте про обвес: "дырка в гирьке, дырка в гирьке... как будто нельзя дырку в калькуляторе просверлить! 😀"
@NoName-tb1uj
28 күн бұрын
Сделай такой видос, желательно на вход через JWT)))
@shape3046
26 күн бұрын
@@NoName-tb1uj Там суть в принципе такая же, только вместо sessionId нужно запрашивать jwt токен, который сервер обычно отдает в response авторизации
Когда перешёл сюда предполагал поиск скрытых api, которые недоступны обычному пользователю и не отображаются в network, потому что обычным пользователем просто не вызываются. Но в целом для темы парсинга это действительно полезная вещь. А я всё таки скорее из тематики безопасности и уязвимостей. Приходилось находить некоторые как я описал действительно скрытые api. Занимает это обычно гораздо больше времени и нужно для других целей, но это совсем другая история.
@garrag8421
16 күн бұрын
А можете рассказать , вы для нахождения скрытых апи использовали вордлисты и если да то какие ?
@user-fd7ce2em5y
16 күн бұрын
@@garrag8421 не думаю, что это лучшее место для обсуждения таких вопросов. И тем не менее мне интересно ответить. Для начала решил попробовать найти хоть что-то с малым словарём от dirb, потом, когда убедился в том, что можно найти что-то не прикрытое, взял словари Api из SecList.
Отличный видос. Минус безопастности сберу
Интересное видео, но хотелось бы услышать про CORS заголовки, ведь бывает что сервер может вроде как не отдать данные просто так
Я бы на твоем месте burp suite использовал, это более серьезный инструмент для реверс инженеринга api. Есть вещи, которые в devtools будет удобнее посмотреть, но burp в большинстве случаев лучше
Бомба! 💣
Крутое видео, усы тоже крутые
сяб за видос
я не заметил, где тут скрытый Api если он открытый и отображается через dev tools. Скрытый это к примеру мобильный Api, который на прямую без того же токена не работает.
@kulichevskiy
Ай бұрын
можно заменить скрытый на «внутренний» суть в том, что его явно делали для внутреннего пользования и, например, не публиковали документацию
@apristen
Ай бұрын
видимо имеется не тот "скрытый api" который хвакеры находят с помощью ffuf или kiterunner (ожидал нечто подобное от данного видео если честно), а просто api не внесённый в документацию.
@sas408
26 күн бұрын
@@kulichevskiy тогда это называется "незадокументированный"
@slavaviktorov6053
13 күн бұрын
@@kulichevskiy т.е. АПИ который торчит наружу в ентернет и доступен каждому это скрыты АПИ для внутреннего пользования?) А если к этому АПИ сгененрировать документацию на основе имеющегося har это будет уже полускрытое АПИ?
@slavaviktorov6053
13 күн бұрын
@@sas408 "незадокументированный" эмм, этот термин не применяется к данному случаю)
Хотелось бы такое же видео про скрытые api как покупателя для сайта ozon и WB. Чтобы мониторить цены
@user-lh6dv2ys8d
28 күн бұрын
А ты сам напиши 😅
пушка!!!!
Привет. Чем пользуешься для рисования схем 3:30 ?
@kulichevskiy
26 күн бұрын
Просто какое-то рандомное приложение для рисования на айпаде. Concepts, кажется.
Расскажи, пожалуйста, про заголовки запросов и ответов подробнее, что там, какая инфа, как они формируются.
а можно сделать данный код через асинхронность(asycio, aiohttp)?
Для "бытового уровня" очень даже сильно! 💪🏻 Скоро автор начнёт не только preserve logs галочку ставить, но и фильтровать галочкой XHR запросы только (дабы убрать запросы к статике и прочим картинкам) и в HAR файл выгружать это всё (по которому смотреть удобно, это JSON по сути всех запросов с их параметрами), а потом ещё "немного помучавшись" с этой ручной работой - плюнет и возьмёт Selenium (Playwright тот же для Python) и будет запускать и "оседлает" своим кодом Headless Browser (а может даже и не headless, запускают же китайцы клик-фермы на куче дешёвых телефонов) дабы выглядеть для сайтов прям "юзером индентичным настоящему" ;-)
@InojjHacker
Ай бұрын
если возможно, лучше обходиться без selenium'а и playwright'а)
@apristen
Ай бұрын
@@InojjHacker почему? легковесность? на данный момент наблюдаю куда важнее скорость разработки, TTM (Time To Market).
@InojjHacker
Ай бұрын
@@apristen скорость разработки на запросах не сильно выше, а преимуществ куча. требует меньше ресурсов для работы, сильно быстрее, формат ответа меняется не так часто, как фронтенд. конечно стоит сказать, что если есть всякие защиты, то придется использовать браузер, но если таких проблем нет, то на запросах решение лучше.
@apristen
Ай бұрын
@@InojjHacker в целом соглсен. интересно как Auth0 вот так запросами сделать ;-) есть видео?
@InojjHacker
Ай бұрын
@@apristen ну такое скорее всего сложно будет. Я иногда запускаю браузер чтоб получить токен или куку через авторизацию, а потом в запросах использую, уже без браузера.
Делал подобный парсер для wildberries на c# с библиотекой парсинга и исполнения JS кода, там пришлось делать несколько вложенных запросов потому что перед запросами к данным происходит вычисление к какому домену обращаться для получения данных
По моему, при поиске нужного запроса по части значения, быстрее будет в каждом запросе развернуть весь ответ(через Expand recursively в контекстном меню) и базовым ctrl+F найти нужное значение ctrl + F - также работает на все активные запросы в NetWork. Так что в теории, можно каждый запрос не разворачивать))
@darkall9564
Ай бұрын
не всегда такое поможет, особенно когда запросов много во время сессии происходит (метрика или реклама подгружается например) Устанешь каждый запрос это все перепроверять
Я к тебе всю Школу 21 приведу с: Чудесное видео
подскажите, пожалуйста, как у вас без print появляется output?
@kulichevskiy
Ай бұрын
просто я в VSCode работаю с Jupyter-ноутбуками.
Выдал базу
Админка понятно, а вот товары так не получается забрать, пробовал? Может я просто что то делаю не так
А будет запись вебинара?
@kulichevskiy
29 күн бұрын
Будет, но не публично, а для тех, кто записался. Так что записывайтесь :)
А если общение происходит по GraphQL?
Давай разбор Яндекс карт)
@kulichevskiy
Ай бұрын
А что там? Там ведь нормальный API есть
кайф
Подскажите пожалуйста! На какой должености можно работать, если иметь такие знания?
@ilyin_sergey
19 күн бұрын
Если __только__ эти - Junior Python dev, например
Дорогие зрители, помните, что аутентификация и авторизация разные процессы! Автор использует авторизацию описывая аутентификацию, что в корне ложно. Аутентификация - вход в систему используя (email, password). Авторизация - проверка прав доступа (удаление, чтение, обновление и создание)
@kulichevskiy
28 күн бұрын
ага, все верно, спасибо за поправку!
Кстати "любителям похимичить" ещё hint: пишете свой плагин (локально можно любой ставить, не требуется одобрения store браузера) который имеет полный доступ к DOM ну и также может задетекченное вообще локально сам в тот же CSV или JSON загенерить, получается всё работает прямо в браузере и доступ наиполнейший к контенту (круче только уже через webdriver если), ну единственный "минус" это на JS надо писать, а не Python.
@nevedimka9040
20 күн бұрын
опять ютуб почему то удаляет мои комменты. В общем если кратко, то я писал, что в detools можно увидеть js код, который инициировал запрос, далее найдя место отправки запроса, можно легко найти место получения ответа. Остается с помощью того же devtools перезаписать js код, что бы полученный ответ отправлять прямиком на свой api
есть только проблема одна и это если есть ключ апи (причём если он генерируется), потому что ключ ты нигде не достанешь если сам сайт не дает его. Если его не кинуть в запрос он просто не ответит за запрос, а получить его практически невозможно, особенно генерируемый.
Мне как сотруднику Мегамаркета отвечающему за часть кабинета продавца, где гуляет в видео автор, стало интересно, что же там за "Секретные API" такие ))
@paveltkachenko8108
24 күн бұрын
🤫
@kulichevskiy
24 күн бұрын
Пожалуйста, не баньте нас 😇
@kulichevskiy
24 күн бұрын
Кстати, не подскажете, вы случайное не слышали где-нибудь в коридоре у кулера, нет ли планов выпустить нормальное API для получения статистики? Я с радостью выпущу инструкцию :)
А с мобильных приложений можно хакнуть, какие API они дергают?
@AndrueUkr
20 күн бұрын
Use wireshark
вот только у некоторых сервисов captcha 3 не даст получить id таким способом, тоже думал, что речь пойдет о действительно скрытом api
А если на сайте JWT, как можно выполнять вход в кабинет таким образом?
@kulichevskiy
28 күн бұрын
Хммм, надо попробовать. Если честно, я не очень глубоко понимаю, как там подпись генерируется.
объясняешь как боженька) если бы использовал зеннопостер вместо питона, то купил бы курс
Можно Selenium использовать
норм, вот только каждый раз логинишся при запуске кода. неплохо бы узнать время хранения этого сешн_айди и логиниться только в случае если он истёк.
Спасибо!
Если это скрытый api то какой тогда открытый? Я так понимаю то что вы назавете о крытым, вообще не api
А это законно? На сколько я понимаю это может привести к некоторым проблемам при большом количестве одновременных запросов к апи. Понятно что видео не об этом, но мы все понимаем для чего нужен парсинг. А так же не забывайте, есть ещё так же условия использования. Ну душно согласен, но в целом как считаете могут ли быть проблемы с законодательной стороны?
Почему фильтром в нетверке не пользуешся ?
@kulichevskiy
28 күн бұрын
для наглядности :)
Берлинский акцент очень похож на мордовский))
Интересно было бы такое разобрать на примере сайта, который получает сигнал через открытые сокеты. То есть сокет почти всегда открыт, прилетает новый заказ, и после чего он превращается на сайте в элемент. Как быть в такой ситуации? К сокетам подключился, но в этом случае получаю только оповещение on_message, оно возвращает {'message':'update'}
@kulichevskiy
Ай бұрын
А можете дать пример такого сайта?
@beerhunters_fp
Ай бұрын
@@kulichevskiy написал вам в ТГ
Файлы с точкой в начале это скрытые файлы в linux, поэтому .env)))
Дорогие зрители, сайт генерируется динамически, а не автоматически
Жаль этого добряка. 😂 Нажимаешь на любой запрос Ctrl+F, берёшь с страницы данные, название, к примеру, и всё, вместо 30 минут 5 сек.)
@ilyin_sergey
19 күн бұрын
Нужно пройти 300 страниц. 300 раз нажимать будете?
@user-nj7oz1xc4l
19 күн бұрын
@@ilyin_sergey искомый тест всегда находится в одном экземпляре)
@user-nj7oz1xc4l
19 күн бұрын
@@ilyin_sergey ну и + нужно один раз нажать на любой запрос а после нажать сочетание клавиш, в появившемся окне вставляешь искомый текст, среди всего хлама найдутся только те запросы где есть искомый текст, не важно в заголовках ответе или data)
Мне одному кажется, что это именно он озвучивает тик токи 'что ты выберешь'
Я не очень понимаю зачем долго искать руками если нам известно айди карточки или название есть после filter. И куку можна использовать старую а , лучше всего генерить руками так администрация сайта не надоест ограничений за автоматизациию.
Алексей, главное, пароль не забудьте сменить, а то засветили.
@kulichevskiy
20 күн бұрын
Дада, мы осознанно :) Все хорошо, спасибо!
сделайте видео-урок на тему парсинга Bitrix24, есть задача получить данные с него, но не могу даже авторизацию победить
@kulichevskiy
Ай бұрын
Хммм, так у них ведь есть API: dev.1c-bitrix.ru/rest_help/ Лучше использовать его, наверное
ОЗОН и Вб слабо?
@kulichevskiy
Ай бұрын
Если вы про API, то вот видео про WB - kzread.info/dash/bejne/gXp7pcFrprCbcZc.html а вот про Озон - kzread.info/dash/bejne/hZ2r2tGPZr2piLg.html
@apristen
Ай бұрын
@@kulichevskiy а они не блочат как-то прямые запросы не от браузера? ну там детект user activity (точнее отсутствие такого activity), например, многие сейчас даже управляемый через webdriver браузер детектят, например, юзер "слишком быстр" и не двигает мышкой = скорее всего бот, блочим. приходится мышкой двигать прям automation тулзой и немного рандомизировать user journey по сайту чтобы сойти за настоящего прям юзера.
я слабо товары парсит? не админку а самих таваров то есть характеристики фото описание цену и так далее
А потом Сбер в один прекрасный момент заблочит акк за нарушение правил использования)
То есть получается у них ни корс, ни валидация токенов не работают? Это хорошее)
@JamesBond-fi3ir
Ай бұрын
ну корсы тока на стороне браузера отработают, а вот с то что без кук работает это странно да))
@kulichevskiy
Ай бұрын
я тоже удивился, когда увидел
Лучше попрсить апишку, тк при любом изменении все упадет либо постоянно сидеть и подстраивать свой код под их новую реализацию.
@kulichevskiy
28 күн бұрын
На 100% согласен
Как сократить видео до 5 минут. 1. Находим запрос 2. Тыкаем на него правой кнопкой мыши сохранить как curl 3. Вставляем в postman 4. В postman в раздели копирования запроса, выбираем python и копируем готовый код на pythone 5. Вставляем в свой проект
Серьезно? Гайд по инспектору в 24 году?... Причем тут "скрытые API" вообще? Если они инспектятся, то они уже априори публичные) Я бы понял, если б скрытые смогли обнаружить, когда сервак получает откуда-то данные (сторонние сервисы, бд, конверторы, аналитика и тд) и перехватывать оттуда данные (как вариант). Но не просто обратиться к CRUD сервера и назвать это парсингом, тем более скрытых апи...
1:38 на заборе аналитики у них нарисован писюн
Ага, все бы было так просто. Ваш АКК забанят очень быстренько. Бесполезный парсинг, короче дедовский способ, когда то работало лет так 10 назад
скучная херата :\ AI попросить сделать битовую херню нынче можно чем смотреть 30 минута ыыееее
@LIGhtkee
27 күн бұрын
Не всем дано создавать что-то. Кто-то занимается скучной хератой, чтобы потом обывалы просили AI сделать битовую херню ыыаееее
@ac130kz
24 күн бұрын
GPT-4 Turbo не может даже числа складывать ыыыы
@ver4418
24 күн бұрын
@@ac130kzПоверил бы, если б за прошлые версии сказал бы) а так в целом всегда надо смотреть на последние версии 4o сейчас самая продвинутая
Очень много лишней и неполной информации, начиная про то, что существует только запрос-ответ. Страшно рассказывать автору про вебсокеты - там видимо видео про новые скрытые технологии будет или всякие rpc. А так - видео бесполезное от слова совсем, чисто кликбейт - название, не тратьте время.
Можно копировать с вкладки нетворк в формате curl и любым онлайн конвертором "curl to code" сразу рабочий код получаешь