Python 请求 : follow a link

标签 python ntlm python-requests

假设我有以下脚本:

import requests

username = 'myUser'
password = 'myPswd'
url = 'https://NTLMwebsite/base.com'
nextPage = 'https://NTLMwebsite/base/next.com'

r = requests.get(url, auth=HttpNtlmAuth(username,password))
#Cool, but how do I access nextPage?

一旦我通过了 NTLM,我该如何请求另一个页面?验证。如果我只是通过以下方式执行另一个请求:requests.get(nextPage, auth=HttpNtlmAuth(username,password)),那么它会将我重定向回基本网站,因为它创建了一个新请求并且必须重新-certify NTLM 身份验证。

有谁知道如何在绕过 NTLM 后访问链接?

最佳答案

“NTLM 验证连接,而不是单个请求”,根据 requests_ntlm package's source code .这意味着您要么必须重复使用相同的请求,要么继续对您发出的每个请求进行身份验证。

您应该能够使用请求的 Session object获得可以重用的持久连接,以及更容易设置身份验证。以下代码演示了正在发生的事情,并且应该为您提供构建的基础:

import requests
from requests_ntlm import HttpNtlmAuth

username = 'myUser'
password = 'myPswd'
url = 'https://NTLMwebsite/base.com'
nextPage = 'https://NTLMwebsite/base/next.com'

s = requests.Session()

s.auth = HttpNtlmAuth(username, password)

r1 = s.get(url)
r2 = s.get(nextPage)
print 'r1', r1
print 'r2', r2
print 'Session using same connection:', r1.connection == r2.connection

r1 = requests.get(url, auth=HTTPBasicAuth(username, password))
r2 = requests.get(nextPage, auth=HTTPBasicAuth(username, password))
print 'r1', r1
print 'r2', r2
print 'Non Session using same connection:', r1.connection == r2.connection

关于Python 请求 : follow a link,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18857938/

相关文章:

python - 如何使用 python zeep 进行重试处理?我正在使用请求重试 session ,但未处理异常

iis - 带有phantomjs的cntlm代理

python - 是否确定使用带有我的用户名和 GitHub 中生成的 token 的请求来通过 GitHub 进行身份验证?

python - 如何禁用特定模块的日志记录

python - 使用 Python 拆分和保存 csv 文件中的文本 block

git - git clone 是否通过 NTLM 代理工作?

python - urllib2.HTTPError : HTTP Error 401: Unauthorized

python - 通过 Python 的请求库访问 Moodle 服务器的 API

python - PyQt5 在 Qtextedit 上发出点击信号

python - 赋值前引用的局部变量