我正在编写一个脚本来使用 Mechanize 从我的公司目录网站自动抓取信息。但是,解释器返回 _response.httperror_seek_wrapper:HTTP 错误 401:需要授权 在 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 证书在公司发行的计算机上进行身份验证。我确定我输入的认证信息是正确的,我到处寻找解决方案。有关如何解决此问题的任何提示?谢谢!
最佳答案
您的身份验证方法似乎不匹配。您声明您的公司使用 GlobalSign 证书,但您的代码使用基本身份验证。他们不相等!!
从Mechanize documentation简要看(受限制),您不会通过手动添加 header 来实现身份验证。它有自己的add_password
处理身份验证的方法。
此外,作为一般的 HTTP 身份验证策略,您应该 不是 通过自己添加身份验证 header 来使用抢占式身份验证。您应该使用必要的身份验证(基于您图书馆的文档)设置您的代码,并让它处理身份验证协商。
关于python - 使用 Mechanize 进行 Python 抓取脚本的 HTTP 错误 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24044625/