将CURL命令转换为Python 2.7

时间:2017-10-22 06:44:18

标签: python curl base64 python-requests

我有一个完全正常的curl命令并给我一个HTTP 200.

curl -i -H "Authorization: Basic jadkfhjkafDSKJ12DD=" http://<ip>/LoadTest/rest/authentication-point/authenticate

上述API需要base64格式的授权,并且必须将详细信息作为标题传递。这是一个GET请求。

当我尝试在Python 2.7中运行相同内容时,我得到Response [403]。代码如下。

import requests
headers = {'Authorization': 'Basic jadkfhjkafDSKJ12DD='}
authurl = "http://<ip>/LoadTest/rest/authentication-point/authenticate"
r = requests.get(authurl, headers=headers)
print r.status_code

我在这里缺少什么?我应该如何传递授权值,就像我在curl命令中传递一样?我尝试了多种方法,但最终仍然得到了HTTP 403。请指导。

1 个答案:

答案 0 :(得分:0)

感谢大家的投入。这是最终的解决方案。我发现有代理停止有效载荷。所以将会话添加到请求中。

import requests
session = requests.Session()
session.trust_env = False
headers = {'Authorization': 'Basic jadkfhjkafDSKJ12DD='}
authurl = "http://<ip>/LoadTest/rest/authentication-point/authenticate"
r = session.get(authurl, headers=headers)
print r.status_code

设置trust_env=False会忽略以下内容:

  • 来自.netrc(代码)的身份验证信息
  • 中定义的CA包 REQUESTS_CA_BUNDLE或CURL_CA_BUNDLE(代码)