@whoareyoutofuckinglecture
Python developer

Как сайты понимают, что их посетил бот на Selenium, а не реальный юзер?

Пишу бота на Python3/Selenium WebDriver для парсинга одного зарубежного интернет-магазина.

Каким-то образом сайт сходу понимает, что с ним работает Selenium и прогоняет моего бота ссаными тряпками :(
Никаких капч там нет. Сайт просто знает, что ты - не реальный пользователь.

Пожалуйста, подскажите, как это возможно и как это исправить?
  • Вопрос задан
  • 3208 просмотров
Решения вопроса 3
alekciy
@alekciy
Вёбных дел мастер
Вариантов много. Из простого:
  • по User-Agent
  • по IP адресу через отслеживание количества запросов с одного адреса
  • по используемым публичным прокси (многие такие сервисы явно сообщают, о себе кто они)
  • и т.д.

Из сложного:
  • отслеживают перемещение мыши
  • ведут аналитику на о типичных поведениях пользователя и ищуют анамалии


Если начинают банить прямо с самого первого запроса, значит спались на чем то элементарном и примитивном. Потому что при сложных вариантах защиты для сбора аналитики боту дают по сайту походить.
Ответ написан
Комментировать
@qid00000000
Мало что знаю, но информацию найду в гугле
Алексей очень хорошо описал причины, которые подтверждаются некоторым личным опытом.

Очень часто, в логах сервера, в user-agent можно встретить selenium. Достаточно в конфиг прописать правило отклонения запросов с user-agent: (*selenium*) и проблема исчезает.

Также, те, у кого стоит метрика, могут обнаружить посетителей, которые ничего не делают, после чего отправляют ip в бан руками.

Обходить это, можно загружая страницу через браузер и случайно сдвигать мышь, случайное количество раз (от 5-10), через случайные промежутки. Спасет от ручной проверки, для большинства сайтов.

Для 100% гарантии, чтобы не банили, нужно "наводиться" на ссылки, которые нужно распарсить следующими (по очереди). Однако, в этом случае, вы пожертвуете производительностью парсера.

Как реализовать: Поднять сервис (несколько) на машине с vnc и получать страницу через браузер, имитируя работу мышкой.

Но, обычно, указать корректный user-agent достаточно. (Я, почему-то уверен, что вы остановитесь на этом варианте).

Однако, самым примитивным способом отследить, что твой сайт парсят, является мониторинг нагрузки сайта на сервер. Дело в том, что подавляющее большинство сайтов находиться на виртуальном хостинге, где владельцу сайта, сдается в аренду часть вычислительной мощности сервера.

Владельцу сайта проще заблокировать тот ip, с которого сыпятся запросы, чем проводить оптимизацию кода сайта и выяснять, по какой причине вообще создалась нагрузка (например, из-за не проставленных индексов в бд).
А порой, это является единственным вариантом, т.к. на сервер, может прилететь за час свыше 10000 запросов к сайту с одного ip.
Для сравнения от yandex/google, за сутки, может прийти около 4000 запросов (с минимальными настройками индексации).

В заключение, я скорее всего озвучу желания владельца сайта: "Пожалуйста, собирайте информацию с сайта адекватнее и наиболее приближенно к реальным запросам от людей. Не пытайтесь выгрузить весь сайт за раз в короткий промежуток времени. Тем более, не тестируйте не завершенную программу на реальных сайтах."
Ответ написан
Комментировать
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
По скорости запросов информации. Скорость работы схемы "мозг - руки" довольно ограниченная - человек не тычет в первую же ссылку - он читает, анализирует и уже потом куда-то переходит, ситуаций, когда человек тыкает в первую ссылку сразу же практически не бывает.
По общим прокси - если Вы используете список прокси с тырнета - почему и владелец сайта не может его скачать и забанить?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы