Рубрики
Без рубрики

Python urllib.error.httterror: http Ошибка 403: Запрещено

Ismycode |. Urllib.Error.httperror: http Ошибка 403: Запрещено происходит, когда вы пытаетесь ловить … Теги с Python, программированием, CodeNewie, учебником.

Ismycode |.

URLLIB.ERROR.HTTPERROR: HTTP-ошибка 403: Запрещено происходит, когда вы пытаетесь перелить веб-страницу, используя Urllib.request Модуль и mod_security блокирует запрос. Есть несколько причин, по которым вы получаете эту ошибку. Давайте посмотрим на каждое из используемых дел подробно.

Как исправить Urllib.Error.httperror: http Ошибка 403: Запрещено?

Обычно веб-сайты защищены приложенным шлюзом, правилами WAF и т. Д., Коминируйте, могут ли запросы от фактических пользователей или срабатывают через автоматизированную систему бота. mod_security Или правило WAF заблокирует эти запросы, рассматривающие их как запросы Spider/Bot. Эти функции безопасности являются наиболее стандартными, чтобы предотвратить атаки DDO на сервере.

Теперь возвращаясь к ошибке, когда вы делаете запрос на любой сайт, используя Urllib.Reques T в основном вы не будете устанавливать пользовательские агенты и заголовки, и по умолчанию Urllib устанавливает что-то вроде Python Urllib/3.3.0 , который легко обнаружен mod_security Отказ

Mod_Security обычно настроен таким образом, что если какие-либо запросы произошли без Действительный пользовательский агент Заголовок (пользователь-агент браузера), Mod_Security заблокирует запрос и вернет Urllib.error.httterror: HTTP Ошибка 403: Запрещено

Пример 403 запрещенной ошибки

from urllib.request import Request, urlopen

req = Request('http://www.cmegroup.com/')
webpage = urlopen(req).read()

Выход

  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 494, in _call_chain
    result = func(*args)
urllib.error.HTTPError: HTTP Error 403: Forbidden
PS C:\Projects\Tryouts> from urllib.request import Request, urlopen

Простой способ разрешить ошибку – передача Действительный пользовательский агент в качестве параметра заголовка, как показано ниже.

from urllib.request import Request, urlopen

req = Request('https://www.yahoo.com', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()

Кроме того, вы можете даже Установите тайм-аут Если вы не получаете ответ с сайта. Python поднимет исключение сокета, если сайт не отвечает в указанный период ожидания.

from urllib.request import Request, urlopen

req = Request('http://www.cmegroup.com/', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req,timeout=10).read()

В некоторых случаях, как и получение биткойна в реальном времени или стоимость фондового рынка в реальном времени, вы отправите запросы каждую секунду, и серверы могут заблокировать, если есть слишком много запросов, исходящих из одного и того же IP-адреса, и бросает 403 ошибку безопасности.

Если вы получите эту ошибку из-за слишком большого количества запросов, подумайте о Добавление задержки между каждым запросом разрешить ошибку.

Пост Python urllib.error.httperror: http Ошибка 403: Запрещена появился первым на INSMYCODE Отказ

Оригинал: “https://dev.to/itsmycode/python-urllib-error-httperror-http-error-403-forbidden-2k67”