使用Mechanize的Python爬虫脚本遇到HTTP错误401

0 投票
1 回答
1465 浏览
提问于 2025-04-18 08:37

我正在写一个脚本,想要自动从我们公司的目录网站上抓取信息,使用的是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认证规则,你不应该通过自己添加认证头来进行预先认证。你应该根据你所用库的文档来设置好必要的认证,让它自己处理认证的协商。

撰写回答