1

以下代码有效,但即使响应后面有文件实例也没有输出

import urllib2
from ntlm import HTTPNtlmAuthHandler

user = 'id'
password = "Password"
url = "http://abc.def.ghij:3080"

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password)
# create the NTLM authentication handler
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman)

# create and install the opener
opener = urllib2.build_opener(auth_NTLM)
urllib2.install_opener(opener)

# retrieve the result
response = urllib2.urlopen("http://abc.def.ghij:3080")
print response.read()
print response.headers

标头响应:

    Cache-Control: private

Content-Length: 0

Location: /index.epx

Server: Microsoft-IIS/7.5

X-AspNet-Version: 4.19

Persistent-Auth: true

X-Powered-By: ASP.NET

Date: Thu, 04 Jul 2013 15:30:03 GMT

Connection: close

print response.read不提供任何内容:O

4

1 回答 1

1
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM

问题是您的网络服务器正在请求 NTLM 身份验证,因此它不会接受 BasicAuth。在发送请求时使用 NTML 身份验证或更改您的网络服务器配置以允许基本身份验证。

不要使用 BasicAuth,因为它通过网络以明文形式发送用户/密码。最低安全是 DigestAuth 或 NTLM 或 GS​​SNegotiate auth。

于 2013-07-04T14:32:43.313 回答