【问题标题】:Get page using NTLM with pyCurl使用带有 pyCurl 的 NTLM 获取页面
【发布时间】:2014-08-21 00:28:41
【问题描述】:

我正在尝试从托管在 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 返回。

【问题讨论】:

    标签: python rest curl pycurl


    【解决方案1】:

    问题是我使用的是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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-11
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多