urllib.error.HTTPError:HTTP 错误 403:使用 urllib.requests 禁止

Posted

技术标签:

【中文标题】urllib.error.HTTPError:HTTP 错误 403:使用 urllib.requests 禁止【英文标题】:urllib.error.HTTPError: HTTP Error 403: Forbidden with urllib.requests 【发布时间】:2021-12-15 08:18:41 【问题描述】:

我正在尝试从 Internet 读取图像 URL 并能够通过 python 将图像获取到我的机器上,我使用了此博客文章中使用的示例https://www.geeksforgeeks.org/how-to-open-an-image-from-the-url-in-pil/,它是https://media.geeksforgeeks.org/wp-content/uploads/20210318103632/gfg-300x300.png,但是,当我尝试我的自己的例子它似乎不起作用我已经尝试了 HTTP 版本,但它仍然给我 403 错误。有谁知道可能是什么原因?

import urllib.request

urllib.request.urlretrieve(
  "http://image.prntscr.com/image/ynfpUXgaRmGPwj5YdZJmaw.png",
   "gfg.png")

输出:

urllib.error.HTTPError:HTTP 错误 403:禁止

【问题讨论】:

尝试将用户代理设置为 firefox 或 chrone 【参考方案1】:

prntscr.com 的服务器正在积极拒绝您的请求。这有很多原因。一些网站会检查调用者的用户代理,看看是否是这种情况。就我而言,我使用httpie 来测试它是否允许我通过非浏览器应用程序下载。有效。于是我就简单的复用了一个user header,看看是不是缺少user-agent。

import urllib.request

opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent', 'MyApp/1.0')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(
  "http://image.prntscr.com/image/ynfpUXgaRmGPwj5YdZJmaw.png",
   "gfg.png")

成功了!现在我不知道服务器使用什么逻辑。例如,我尝试了一个标准的Mozilla/5.0,但没有奏效。你不会总是遇到这个问题(只要你是合理的,大多数网站在他们允许的范围内都很松懈),但是当你这样做时,尝试使用用户代理。如果没有任何效果,请尝试使用与浏览器相同的用户代理。

【讨论】:

以上是关于urllib.error.HTTPError:HTTP 错误 403:使用 urllib.requests 禁止的主要内容,如果未能解决你的问题,请参考以下文章

urllib.error.HTTPError:HTTP 错误 404:未找到 - python

Pytube:urllib.error.HTTPError:HTTP 错误 410:消失了

urllib.error.HTTPError: HTTP Error 403: Forbidden

urllib.error.HTTPError: HTTP Error 403: Forbidden

urllib.error.HTTPError: HTTP Error 403: Forbidden

爬虫403问题解决urllib.error.HTTPError: HTTP Error 403: Forbidden