3

次のスクリプトがあるとします。

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 認証を再認証する必要があるため、ベース Web サイトにリダイレクトされます。

NTLM をバイパスした後、リンクをたどる方法を知っている人はいますか?

4

1 に答える 1

3

requests_ntlm パッケージのソース コードによると、「NTLM は単一の要求ではなく、接続を認証します」。これは、同じリクエストを再利用するか、リクエストごとに認証を続ける必要があることを意味します。

リクエストのSession オブジェクトを使用して、再利用できる永続的な接続を取得できるようにするだけでなく、認証の設定を容易にする必要があります。次のコードは、何が起こっているかを示しており、構築するための何かを提供する必要があります。

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
于 2013-09-17T20:29:59.483 に答える