请求需要密码验证的http数据

2024-04-19 20:09:00 发布

您现在位置:Python中文网/ 问答频道 /正文

如果有更简单、更干净的方法,请告诉我。我正在尝试复制这个呼叫:

curl -s -u user -k "https://10.10.10.10:8001/h/data/ps4"

此呼叫需要密码。我试图模仿的是:

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
top_level_url = "https://10.10.10.10:8001"
password_mgr.add_password(None, top_level_url, 'user', 'pass')
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(urllib2.HTTPHandler, handler)
request = urllib2.Request('https://10.10.10.10:8001/h/data/ps4')
print urllib2.urlopen(request).read()

然而,这似乎不起作用,因为我得到:

File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 401: Unauthorized

curl命令的输出返回一个字符串列表(例如["a","b","c"])——理想情况下,我希望以某种方式将其存储到python列表中,但我无法超过第一位。 我做错什么了?你知道吗


Tags: httpsurldatarequesttoppasswordopenerurllib2
1条回答
网友
1楼 · 发布于 2024-04-19 20:09:00

如果要使用^{}库,可以这样做(从documentation):

>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
<Response [200]>

有一篇关于requests如何进行身份验证here的更详细的文章。你知道吗

相关问题 更多 >