gpt4 book ai didi

用于获取受 DES/kerberos 保护的 URL 的 Python 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:15 25 4
gpt4 key购买 nike

我有一个 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 方库或技巧可以让我再次使用它?

最佳答案

您可以尝试使用 selenium 的 webdriver 直接驱动浏览器。当我想抓取动态生成的网站时,我有时会这样做。这是打开页面并输入密码的代码示例

from selenium import webdriver

b = webdriver.Chrome()
b.get('http://www.example.com')
username_field = b.find_element_by_id('username')
username_field.send_keys('my_username')
password_field = b.find_element_by_id('password')
password_field.send_keys('secret')
login_button = b.find_element_by_link_text('login').click()

这会让您通过网站的典型登录屏幕。然后

b.page_source

将为您提供该页面的源代码。即使它主要是用 Javascript 生成的。

源代码解析起来非常简单:http://code.google.com/p/selenium/source/browse/trunk/py/selenium/webdriver/remote/webelement.py

关于用于获取受 DES/kerberos 保护的 URL 的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com