用Python的urllib检测密码保护的网站
你好,我有一长串图片的网址(比如 site.com/pic.jpg
),我正在用我的程序(Python 2.6)一个一个地获取这些图片。我使用的是 urllib.urlretrieve()
。有时候,这些网址会让我输入用户名和密码。所以我把 urllib.urlretrieve()
放在了一个尝试/异常的结构里,以避免那些需要输入的链接。但我还是需要输入一个假的用户名和密码,才能触发错误,让程序跳过这个网址。有没有办法让我自动检测到需要输入密码的情况,然后直接跳过这个网址?因为我的网址列表很长,我不想一直在这里等着,偶尔还要按一下回车……谢谢!
1 个回答
2
如果网站需要HTTP认证,你需要在请求中添加一个头信息,里面放入用户名和密码(可以是假的,也可以是真的)。下面是使用 urllib2
来实现这个的方式。
import base64
import urllib2
headers = {'Authorization': 'Basic ' + base64.encodestring('[username]:[password]')}
req = urllib2.Request(url, data, headers)
resp = urllib2.urlopen(req).read()
如果用户名或密码不正确,系统会返回 urllib2.HTTPError: HTTP Error 401: Unauthorized
的错误信息,但如果服务器不需要认证,它就会忽略这些认证信息。