【问题标题】:403 forbitted error with python3 urllib.requestpython3 urllib.request 出现 403 禁止错误
【发布时间】:2017-07-01 13:41:00
【问题描述】:

我试图访问一个网站,看看我是否可以使用 urllib.import 的 urlopen 模块读取它的内容,但后来我看到我收到了 403 禁止错误。

但是当我尝试通过网络浏览器打开链接时,它会打开。在我看来,这是网站的某种安全措施,可能会防止恶意攻击。

我想知道有什么机制可以让我的内容可以通过网络浏览器访问,然后阻止通过脚本访问,例如我正在运行的脚本?

{代码}

 >>> from urllib.request import urlopen
 >>> html= urlopen("http://www.english-for-students.com/A-Wise-Counting.html")
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/lib/python3.5/urllib/request.py", line 163, in urlopen
     return opener.open(url, data, timeout)
   File "/usr/lib/python3.5/urllib/request.py", line 472, in open
     response = meth(req, response)
   File "/usr/lib/python3.5/urllib/request.py", line 582, in http_response
     'http', request, response, code, msg, hdrs)
   File "/usr/lib/python3.5/urllib/request.py", line 510, in error
     return self._call_chain(*args)
   File "/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain
     result = func(*args)
   File "/usr/lib/python3.5/urllib/request.py", line 590, in      http_error_default
     raise HTTPError(req.full_url, code, msg, hdrs, fp)
 urllib.error.HTTPError: HTTP Error 403: Forbidden
 >>>

{代码}

【问题讨论】:

  • 我认为您应该更改标题,而问题与标题无关。

标签: python-3.5 urlopen


【解决方案1】:

一种可能的方法是检查兼容浏览器用户代理的标头。更多信息可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent

【讨论】:

    【解决方案2】:

    检查this link 中标题为“标题”的部分。从页面

    有些网站不喜欢被程序浏览,或者发送不同的 不同浏览器的版本。默认情况下 urllib 标识 本身为 Python-urllib/x.y (其中 x 和 y 是主要和次要 Python 版本的版本号,例如Python-urllib/2.5),其中 可能会混淆网站,或者根本无法正常工作。浏览器的方式 标识自己是通过 User-Agent 标头 [3]。当你 创建一个 Request 对象,您可以在其中传递一个标题字典。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2017-05-04
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 2013-07-19
      • 1970-01-01
      相关资源
      最近更新 更多