使用带有pyCurl的NTLM获取页面

时间:2014-06-30 15:15:37

标签: python rest curl pycurl

我正在尝试从托管在Windows IIS服务器上的REST Web服务中检索数据;服务器使用HTTPS并要求身份验证。

以下Curl命令可以正常工作:

 curl -k --ntlm --user bob https://mywebservice

然而,当我将其转换为等效的pycurl时,我可以在程序中使用它,我正在努力让它进行身份验证。

到目前为止,我有:

import pycurl

name='bob'
pwd='pwd1'
url="https://mywebservice"

curl = pycurl.Curl()
curl.setopt(pycurl.URL, url)
curl.setopt(pycurl.SSL_VERIFYPEER, 0)

#not sure about this
#curl.setopt(pycurl.PROXYAUTH, pycurl.HTTPAUTH_NTLM)
#curl.setopt(pycurl.PROXYUSERPWD,"{}:{}".format(name, pwd))

curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_NTLM)
curl.setopt(pycurl.USERNAME, name)
curl.setopt(pycurl.USERPWD, pwd)


curl.perform()
curl.close()

无论如何,通过以下代码和变体,我不断获得:

401 - Unauthorized: Access is denied due to invalid credentials

从IIS返回。

1 个答案:

答案 0 :(得分:3)

问题在于我使用pycurl.USERNAMEpycurl.USERPWD

我必须通过源路由,但我找到了:pycurl.USERPWD,它让它工作了:

import pycurl

name='bob'
pwd='pwd1'
url="https://mywebservice"

curl = pycurl.Curl()
curl.setopt(pycurl.URL, url)
curl.setopt(pycurl.SSL_VERIFYPEER, 0)

curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_NTLM)
curl.setopt(pycurl.USERPWD, "{}:{}".format(name, pwd))

curl.perform()
curl.close()