Python urllib2: 如何忽略 HTTPError 401
我想用urllib2访问一个网页,但总是遇到HTTP错误401:未授权。
我的问题是,这个网页在像Firefox这样的浏览器中不需要任何认证。只有在使用Google Chrome时,才会弹出一个认证对话框。而且这个对话框只在页面完全加载后才会出现。所以我可以直接取消认证,正常使用这个页面。
有没有人知道我怎么才能在不进行认证的情况下打开这个网页呢?非常感谢!
附注:这个网页的链接是:http://61.19.248.15/$sitepreview/sampran.go.th/
3 个回答
0
我正在通过这种方式来绕过这些错误:
def append_text(string,n):
i=1
while i<n:
i = i+1
url = string + str(i)
try:
f = urllib.urlopen(url)
s = f.read()
...
except IOError, e:
if hasattr(e, 'code'):
print 'We got an error'
print e.code
0
如果网络服务器想要返回一个401状态码,而不是直接返回网页内容,那么客户端就无法获取到网页的内容。相反,你需要说服服务器来提供这个页面。也许服务器在等着你提供一些认证信息,而这些信息你可能已经保存在Firefox浏览器里了。或者,服务器想要在你的http请求中看到Firefox的用户代理(User-Agent)信息。如果你无法猜测或者询问服务器管理员,你可以尝试使用Wireshark这个工具,监听一下成功会话的网络交流,然后把它和失败的会话进行对比。
1
这是关于身份验证的最佳文章之一。
http://www.voidspace.org.uk/python/articles/authentication.shtml