Браузер выдает 200 возвратов, в то время как requests.get выдает 403

#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 работает на той же машине (локальной) или на другой машине?