Одна из примитивных защит сайтов от парсинга – проверка HTTP заголовка User-Agent, который содержит наименование веб-браузера или клиента, делающего запрос. Если этого заголовка нет, то сервер может не выполнить запрос, раскусив, что его делает робот, а не человек. Обход защиты – имитация реального User-Agent браузера библиотекой fake_useragent. Установка:
pip install fake_useragent
Использование:
from fake_useragent import UserAgent ua = UserAgent() print(ua.random) # Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36
ua.random
– агент случайного браузера (с учетом статистики распространенности браузеров по миру). Также доступны агенты для конкретных браузеров: ua.ie, ua.msie, ua.opera, ua.chrome, ua.google, ua.firefox, ua.ff, ua.safari.
Пример отправки запроса через request:
from fake_useragent import UserAgent import requests ua = UserAgent() # куда шлем (этот URL как раз ответит нам наш UA для проверки) url = 'https://httpbin.org/user-agent' # создаем заголовок headers = {'User-Agent': ua.chrome} # делаем запрос, передав заголовок result = requests.get(url, headers=headers) print(result.content)
Еще в классе есть метод ua.update()
, что обновляет базу данных браузеров, если она устарела. Это медленный метод, он делает запрос на сервера. Его не нужно вызывать каждый раз.
Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈