Почему модуль Python Requests запускает логику обнаружения ботов на этом веб-сайте?Python

Программы на Python
Anonymous
Почему модуль Python Requests запускает логику обнаружения ботов на этом веб-сайте?

Сообщение Anonymous »

Я пытаюсь получить доступ к веб-сайту. Он работает в браузере и работает в Curl, но выдает 403 в Python (который поставляется вместе с CAPTCHA, но это не имеет значения, поскольку я пытаюсь найти разницу между запросами Python и другими библиотеками).
Подобные вопросы задавались и раньше, но я учел эти рекомендации и провел дополнительный анализ, поэтому надеюсь, что кто-нибудь из сообщества Python сможет помочь, поскольку эта проблема остается нерешенной.
Это работает:

Код: Выделить всё

curl -v --http1.1 -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0" https://www.kron4.com/

> GET / HTTP/1.1
> Host: www.kron4.com
> Accept: */*
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
HTTP 2 тоже работает:

Код: Выделить всё

curl -v -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0" https://www.kron4.com/

> GET / HTTP/2
> Host: www.kron4.com
> Accept: */*
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Запрос Python с треском завершается неудачно, даже если я сопоставляю заголовок.

Код: Выделить всё

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0'}
response = requests.get(url, headers=headers)
response.raise_for_status()

>File "/Users/xxxxx/Documents/workspace/NewsFu/myenv/lib/python3.11/site-packages/requests/models.py", line 1024, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://www.kron4.com/

Я знаю, что Python добавляет пару вещей, таких как Accept, но я не думаю, что это проблема, поскольку браузер тоже их добавляет. Он поддерживает только HTTP/1.1, поэтому я попробовал его с помощью Curl. На данный момент я думаю, что, возможно, проблема не в заголовке, а веб-сайт обнаруживает что-то еще необычное в запросе Python. Но то, что это такое, меня удивляет, потому что все зашифровано. В противном случае я мог бы использовать Wireshark, чтобы разобрать его дальше. Любые идеи приветствуются.

Подробнее здесь: https://stackoverflow.com/questions/787 ... is-website

Вернуться в «Python»