#python #request #cloudflare
Вопрос:
Я не совсем понимаю, чего мне не хватает. Если я открою новый браузер, очищенный от всех файлов cookie, кэша, всего остального, и перейду к этой конечной точке api для определенного сайта («api.site.com/data?key=my_key»), я получаю правильный ответ 200 с возвращенными данными. Я захожу в инструменты разработки в своем браузере, копирую каждый заголовок, отправленный с этим запросом, и включаю его в свой запрос:
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0", "Accept": "text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate, br", "Connection": "keep-alive", "DNT": "1", "Host": "api.site.com", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Sec-Fetch-User": "?1" } r = requests.get("api.site.com/data?key=my_key", headers=headers) print(r.status_code)
Однако код возвращаемого состояния-403, и я получаю ошибку cloudflare 1020. Что еще мне не хватает, что позволяет cloudflare различать эти два запроса? Заголовки идентичны, это простой запрос на получение, файлы cookie также не отправляются.
Комментарии:
1. @DaniMesejo Я даю агента.
2. Я думаю, что на этом сайте есть защита от роботов, которая использует своего рода дактилоскопию. Проверьте, можете ли вы получить доступ к веб-сайту с помощью браузера Firefox, в котором отключены все виды снятия отпечатков пальцев. Если у вас есть что-то на основе JS, вам может понадобиться браузер без головы.
3. @asdasd31 Ваш скрипт Python работает на той же машине (локальной) или на другой машине?