我有一个 Python 脚本,它每天从 URL 自动下载一次。
最近,保护 URL 的身份验证已更改。为了让它与 Internet Explorer 一起工作,我必须通过在某处的注册表项中添加 SupportedEncryptionTypes“0x7FFFFFFF”来为 Kerberos 启用 DES。然后当我浏览到该站点时,它会提示我在 IE 中输入我的域/用户/密码。
我之前工作的python代码是:
def __build_ntlm_opener(self):
passman = HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, self.answers_url, self.ntlm_username, self.ntlm_password)
ntlm_handler = HTTPNtlmAuthHandler(passman)
opener = urllib.request.build_opener(ntlm_handler)
opener.addheaders= [
#('User-agent', 'Mozilla/5.0 (Windows NT 6.0; rv:5.0) Gecko/20100101 Firefox/5.0')
('User-agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)')
]
return opener
现在代码在使用开瓶器时因简单的 401 而失败:
urllib.error.HTTPError: HTTP Error 401: Unauthorized
我对 Kerberos 或 DES 了解不多,但从我目前看到的情况来看,我无法确定 urllib 是否支持使用这些。
是否有任何第 3 方库或技巧可以让我再次使用它?