7

Python を使用して会社のサーバーからページにアクセスしようとしています。最初のトレイルは 401: Unathorized を返します (サーバーは認証のためにドメイン ユーザー名/パスワードを必要とします)。そして、ヘッダーの内容は以下の通りで、Negotiate、NTLM、Digestの3つの認証プロトコルに対応しているようなので、どれを選んでも良いと思いますよね?

Content-Type: text/html
Server: Microsoft-IIS/7.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Digest qop="auth",algorithm=MD5-sess,nonce="+Upgraded+v184080dc2d18fe10d63520db505929b5b5b929ec98692ce010e80d6347b7a35d4027e59e277ac4fe1c257a95196071258a8e0797bf6129f76",charset=utf-8,realm="Digest"
X-Powered-By: ASP.NET
Date: Tue, 06 Aug 2013 09:24:44 GMT
Connection: close
Content-Length: 1293
Set-Cookie: LB-INFO=1065493258.20480.0000; path=/

私は次の python コードを使用していますが、まだ 401 アンソライズされていないエラーが発生しています。NTLM を使用する必要がありますか? 前もって感謝します!

p = urllib2.HTTPPasswordMgrWithDefaultRealm()
p.add_password(None, self.url, username, password)
handler = urllib2.HTTPDigestAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)

f = opener.open(self.url)
4

2 に答える 2

7

urllib2は Python の標準ライブラリですが、必ずしも HTTP リクエストに最適なツールではありません。

パッケージを確認することを強くお勧めしrequestsます。認証チュートリアルはこちらにあります: http://docs.python-requests.org/en/latest/user/authentication/#digest-authentication

于 2013-08-06T15:01:39.283 に答える