假设我有以下脚本:
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))
执行另一个请求,那么它会将我重定向回基本网站,因为它会创建一个新请求并且必须重新验证NTLM身份验证。
有没有人知道如何在您绕过NTLM后关注链接?
答案 0 :(得分:2)
“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