http - 无法向 SO 发出 http get 请求

标签 http http-status-code-403

我有一段python代码可以发出http get请求。 我可以成功地向 http://google.com 这样的 URL 发出请求并下载他们的页面。但我无法向 http://stackoverflow.com 发出获取请求.它显示 HTTP 403 forbidden ERROR。 但是我可以从我的浏览器访问 stackoverflow。那么这个错误的原因可能是什么?

代码:

导入 urllib2
c=urllib2.urlopen('https://stackoverflow.com/')
内容=c.read()
打印内容[0:50]

错误: HTTPError:HTTP 错误 403:禁止访问

最佳答案

同样,我使用的是 Python 3。

urllib.request.urlopen('http://stackoverflow.com') 因 HTTP 错误 403 而失败。

我更改了 User-Agent,然后它起作用了:

import urllib.request
urllib.request.urlopen(urllib.request.Request('http://stackoverflow.com/',headers={'User-Agent':'Mozilla/5.0'}))

所以看起来 stackoverflow.com 会根据 User-Agent 过滤请求,而 google.com 不会这样做。

urllib2‘s default user agent string is "Python-urllib/2.6" (on Python 2.6)

来源:https://docs.python.org/2/library/urllib2.html

关于http - 无法向 SO 发出 http get 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029440/

相关文章:

api - GetMapping 在 spring boot 中返回错误 405

google-chrome - 如何在 puppeteer 中发送 POST 请求?

java - 为什么我的代码返回 403 禁止访问

c# - IIS7 和 MVC 2 的 403.14 错误已经尝试了所有其他建议的修复方法

java - OkHttpClient 获取响应正文

javascript - 一个简单的 Angular JS $http 对象响应有问题吗?

http - 带有 WAI 的斐波那契 Web 服务

android - 无法使用 nameValuePairs(android) 将数组发送到服务器

rest - 访问被拒绝 : 403 or 404?

java - 找不到 :/_ah/start on Google App Engine 的文件