无法向SO发出http get请求

Unable to make a http get request to SO

我在python中有一段代码可以发出HTTP GET请求。我可以成功地向url(如http://google.com)发出请求并下载他们的页面。但我无法向http://stackoverflow.com发出get请求。显示HTTP 403禁止错误。但是,我可以从浏览器访问stackoverflow。那么这个错误的原因是什么呢?

代码:

进口URLILB2c=urllib2.urlopen('https://stackoverflow.com/')内容=c.读取(打印内容[0:50]

错误:HTTP错误:HTTP错误403:禁止


这里也一样,我使用的是python3。

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

我更改了用户代理,然后它开始工作:

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

因此,stackoverflow.com似乎基于用户代理过滤请求,而google.com并没有这样做。

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

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