使用Mechanize的Python爬虫脚本遇到HTTP错误401
我正在写一个脚本,想要自动从我们公司的目录网站上抓取信息,使用的是mechanize这个工具。不过,当我运行脚本时,解释器返回了_response.httperror_seek_wrapper: HTTP Error 401: Authorization Required,这个错误出现在br.open(url)
这一行。
from sys import path
path.append("./mechanize/mechanize")
import _mechanize
from base64 import b64encode
def login (url, username, password):
b64login = b64encode('%s:%s' % (username, password))
br = _mechanize.Browser()
br.set_handle_robots(False)
br.addheaders.append(('Authorization','Basic %s' % b64login))
br.open(url)
r = br.response()
print r.read()
我想访问的网站是我们公司内部网络中的一个网站,它使用GlobalSign证书来进行身份验证,只能在公司发放的电脑上使用。
我确定我输入的身份验证信息是正确的,但我到处找都没有找到解决办法。有没有什么提示可以帮我解决这个问题?谢谢!
1 个回答
0
看起来你的认证方法不太对劲。你说你的公司使用GlobalSign证书,但你的代码却在用基本认证。这两者可不是一回事!
从我简单浏览的Mechanize文档(虽然内容有限)来看,你并不是通过手动添加头信息来实现认证的。它有自己的add_password
方法来处理认证。
另外,作为一般的HTTP认证规则,你不应该通过自己添加认证头来进行预先认证。你应该根据你所用库的文档来设置好必要的认证,让它自己处理认证的协商。