Как стать автором
Обновить

Анализ системы защиты от ботов на примере letu.ru

Уровень сложностиСредний
Время на прочтение40 мин
Количество просмотров6K
Всего голосов 30: ↑30 и ↓0+30
Комментарии15

Комментарии 15

Несколько раз перечитал ключевые моменты, но так и не понял - все, проделанное в статье, можно было заменить просто селениумом с хром драйвером, который перед началом парсинга (или в случае истекания срока куки) проходит челлендж, получает все куки, отдает их парсеру, который ходит с ними и таким же юзерагентом, пока не получит не 200 код?

селениумом с хром драйвером

Это же чистосердечное признание бота.

Можно оргинальный хром(и почти любой хром based) например открывать. Я так пользовался через puppeteer, плюс есть плагины которые антидетект реализуют, для сервера(и по факту) получается обычный полноценный браузер.

Почему же? Вы о мелких грязных лайвхаках, вроде наличия системной переменной или вызова функции, которые может применить сайт?

Думаю, такие детские грабли чем-то вроде https://pypi.org/project/undetected-chromedriver/ должны лечиться в один клик

Существуют способы обнаружения автоматизации, которые связаны с протоколом, по которому идёт обмен данными между браузером и скриптом. Chrome, как правило, автоматизируется при помощи CDP. Через него-же работают все фичи, которыми можно пользоваться, когда вы открываете DevTools.
Cуществуют способы и антибот системы, которые умеют определять, что у вас открыта консоль. Многие автоматизированные системы типа puppeteer не умеют из коробки проходить этот тест (даже если включить stealth-plugin).
Пример теста: https://verz1lka.github.io/x/runtime.html (попробуйте страницу с открытой и закрытой devtools консолью)

Другая проблема таких плагинов - как правило, они почти никогда не могут нормально перекрывать проверки, которые делаются внутри айфреймов.

Так что, только самописный extension остаётся из простых и понятных вариантов?

Может быть, если написать все асинхронно, то RPS будет значительно больше.
Но на уровне 1.2 RPS действительно можно использовать тот же Selenium и вариации на него, тоже такая мысль возникла, пока читал.

Так а какое значение имеет RPS? Скраппер ходит мимо селениума во много потоков, открывая прямые TCP соединения с сайтом, и делая запросы только по сути. Хоть на чистом C++ может быть написан.

Селениум приходит на помощь скрапперу, условно, 1 раз в 5 минут, чтобы новые куки получить правильные, и скраппер, подставив их в соответствующий хедер, продолжил работу

Условно, я к тому, что если у нас нет таргета в виде высокой скорости обращения и тд, а нам достаточно условных 1-2 запросов в секунду, можно в лоб все забирать через селениум.

Если начать масштабировать такие решения, предположим, хотим собирать 1M страниц каждый день - это будет очень дорого.

Это к слову. Как бы ты не пытался защитится от парсинга своего продукта, вопрос только во времени когда кто то допытливый сможет раскрутить и разобраться. 100% защиты не бывает и не возможно придумать) Можно только усложнить и увеличить время для достижения этого.

Обычно в браузер просто подсовывают фейковые характеристики, собранные с реальных пользователей.

А посмотрите megamarket.ru? Я тут упоминал, в первую сессию они собирали отпечаток, со второй блокировали. Может с тех пор что-то и поменялось, не проверял. Сбер это же уровень, на котором стоит оттачивать мастерство)

1000 SKU собрать не проблема. Проблема - делать это каждый день)

Спасибо, очень ценная информация, тяжело что-то найти на эту тему. Нужно будет детальнее изучить

Оставлю ссылку на http://jsnice.org/ автоматом переименовывает все переменые и функции

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории