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”