2024-09-30 14:23:06 发布
网友
我正面临一个奇怪的问题,每当我试图用urllib.检索,它永远不会返回,而终端只是忙着等待响应,而响应再也不会回来。在
编码
resp = urllib2.urlopen("http://charlesngo.com/wp-content/uploads/2015/11/rat-race-full-res-1030x728.jpg")
服务器拒绝您的请求,因为它检测到您正在通过检查请求上的用户代理头从Python脚本获取图像。用户可以从一个模拟代理添加一个不同的浏览器头,并可以覆盖另一个浏览器代理。在
>>> import urllib2 >>> url = "http://charlesngo.com/wp-content/uploads/2015/11/rat-race-full-res-1030x728.jpg" >>> req = urllib2.Request(url) >>> resp = urllib2.urlopen(req) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/urllib2.py", line 127, in urlopen return _opener.open(url, data, timeout) File "/usr/lib64/python2.7/urllib2.py", line 410, in open response = meth(req, response) File "/usr/lib64/python2.7/urllib2.py", line 523, in http_response 'http', request, response, code, msg, hdrs) File "/usr/lib64/python2.7/urllib2.py", line 448, in error return self._call_chain(*args) File "/usr/lib64/python2.7/urllib2.py", line 382, in _call_chain result = func(*args) File "/usr/lib64/python2.7/urllib2.py", line 531, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 403: Forbidden >>> req = urllib2.Request(url) >>> req.add_header('user-agent', "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11") >>> resp = urllib2.urlopen(req) >>> resp.read()[:10] '\xff\xd8\xff\xe0\x00\x10JFIF'
有关设置用户代理头的详细信息,请参见this question。在
值得注意的是,服务器管理员试图阻止脚本下载是有原因的-例如带宽成本-所以你应该考虑绕过他们的阻止机制是否是一个可以接受的行为,特别是如果你要经常运行下载。在
服务器拒绝您的请求,因为它检测到您正在通过检查请求上的用户代理头从Python脚本获取图像。用户可以从一个模拟代理添加一个不同的浏览器头,并可以覆盖另一个浏览器代理。在
有关设置用户代理头的详细信息,请参见this question。在
值得注意的是,服务器管理员试图阻止脚本下载是有原因的-例如带宽成本-所以你应该考虑绕过他们的阻止机制是否是一个可以接受的行为,特别是如果你要经常运行下载。在
相关问题 更多 >
编程相关推荐