python - 使用 Mechanize 进行 Python 抓取脚本的 HTTP 错误 401

标签 python http authentication mechanize login-script

我正在编写一个脚本来使用 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/

相关文章:

python - matplotlib 和 numpy - 直方图条形颜色和标准化

mongodb - 如何在 Mongo Java 驱动程序 2.13.0 中使用给定的用户名和密码对任何数据库进行身份验证?

ruby-on-rails - Sorcery Gem - 外部提供商的自定义 user_info_mapping

php - 在 Android 和 PHP Web 服务之间验证用户

python - 弃用类和子类的首选方法是什么

python - 获取或操作 Selenium Webdriver 中的所有 cookie

python - 如何使用 .grid 方法将滚动条添加到 tkinter 文本小部件

ajax - 混合内容 : Call http content from API from https page

python - 如何使用 Django 活塞以文本/纯文本形式返回响应?

java - 什么样的参数分配给 'HTTPServletResponse response'