【问题标题】:Python Requests: follow a linkPython 请求:点击链接
【发布时间】:2013-09-17 19:07:38
【问题描述】:

假设我有以下脚本:

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,有谁知道如何点击链接?

【问题讨论】:

    标签: python ntlm python-requests


    【解决方案1】:

    “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
    

    【讨论】:

    • 非常感谢。这成功了。我将查找一般会话,以便将其应用于其他语言。
    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2020-12-28
    • 2020-11-27
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多