Существует большое количество методов, которые веб-сайты могут использовать для обнаружения ботов.Мы можем сгруппировать их в следующем списке:
Проверка заголовков. Это самая распространенная проверка базового уровня, которая проверяет Заголовки HTTP-запроса для существования, отсутствия, значений по умолчанию, фальшивых или поврежденных значений.
Например, по умолчанию User-Agent
в запросах Python начинается с python-requests/
, что может быть легко проверено на бэкенде, и в результате ваш клиент будет помечен какбот и получить ответ «ошибка».
Решение: Попробуйте прослушать тот же запрос из браузера (вы можете использовать Fiddler ) и клонировать заголовки из браузера.В запросах Python это может быть сделано с помощью следующего кода:
headers = {
"User-Agent": "Some User-Agent"
}
response = requests.get(url, headers=headers)
Cookies проверка. Да, Cookie
также HTTP-заголовок, но метод проверки отличается от предыдущего.Идея этого метода заключается в проверке заголовка Cookie
и проверке каждого файла cookie.
Решение:
1) Перехватывать все запросы, выполненные браузером;
2) Проверьте запрос, который вы пытаетесь повторить, и посмотрите заголовок Cookie
;
3) Поиск значений каждого файла cookie в предыдущих запросах;
4) Повторите каждый запрос, которыйустановить cookie (-ы) перед основным запросом для сбора всех необходимых файлов cookie.
В запросах Python вам не нужно очищать вручную, просто используйте session
:
http_session = requests.Session()
http_session.get(url_to_get_cookie) # cookies will be stored inside "http_session" object
response = http_session.get(final_url)
Проверка IP-адреса или поставщика. Веб-сайт может проверить IP-адрес и поставщика, которые не указаны в базах спама.Это возможно, если вы используете публичные прокси / VPN.
Решение: Попробуйте использовать другие прокси или сменить VPN.
Конечно,это упрощенное руководство, которое не включает информацию о генерации JavaScript заголовков / токенов, «контрольных» запросов, WebSocket и т. д. Но, на мой взгляд, оно может быть полезным в качестве руководства начального уровня, которое может указать кому-то, где искать.