我正在编写一个脚本,使用mechanize自动从我的公司目录网站中删除信息。但是,当我运行脚本时,解释器会在br.open(url)
上返回 _response.httperror_seek_wrapper:HTTP错误401:需要授权。
这是我的代码中解释器遇到错误的部分。
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证书在公司发布的计算机上进行身份验证。
我确信我输入的身份验证信息是正确的,我到处寻找解决方案。有关如何解决此问题的任何提示?谢谢!
答案 0 :(得分:0)
看起来您的身份验证方法不匹配。您声明您的公司使用GlobalSign证书,但您的代码使用的是基本身份验证。他们不等于!!
通过简要查看Mechanize documentation(受限制),您不会通过手动添加标头来实现身份验证。它有自己的add_password
方法来处理身份验证。
此外,作为一般的HTTP身份验证策略,您应 NOT 通过自行添加身份验证标头来使用抢先身份验证。您应该使用必要的身份验证(基于库的文档)设置代码,并让它处理身份验证协商。