Mar*_*cus 26 python authentication api passwords request
我正在关注api,我需要使用我的用户ID和密码的Base64身份验证.
'用户ID和密码需要连接,然后Base64编码'
然后它显示了这个例子
'userid:password'
Run Code Online (Sandbox Code Playgroud)
然后它继续说'在"授权标题"中提供编码值"
'例如:授权:BASIC {Base64-encoded value} '
如何将其写入python api请求?
z = requests.post(url, data=zdata )
Run Code Online (Sandbox Code Playgroud)
谢谢
Jos*_*osh 57
请求库具有Basic Auth支持,并将自动为您编码.您可以通过在python repl中运行以下命令来测试它
from requests.auth import HTTPBasicAuth
r = requests.post(api_URL, auth=HTTPBasicAuth('user', 'pass'), data=payload)
Run Code Online (Sandbox Code Playgroud)
您可以通过键入以下内容来确认此编码.
r.request.headers['Authorization']
Run Code Online (Sandbox Code Playgroud)
输出:
u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4'
Run Code Online (Sandbox Code Playgroud)
Alf*_*eme 37
您可以通过执行以下操作对数据进行编码并发出请求:
import requests, base64
usrPass = "userid:password"
b64Val = base64.b64encode(usrPass)
r=requests.post(api_URL,
headers={"Authorization": "Basic %s" % b64Val},
data=payload)
Run Code Online (Sandbox Code Playgroud)
我不确定您是否要在授权字段中添加"BASIC"字样.如果您提供API链接,那就更清楚了.
小智 15
使用 python3,我找到了一个对我有用的解决方案:
import base64
userpass = username + ':' + password
encoded_u = base64.b64encode(userpass.encode()).decode()
headers = {"Authorization" : "Basic %s" % encoded_u}
Run Code Online (Sandbox Code Playgroud)
如请求文档https://2.python-requests.org/en/latest/user/authentication/ 中所述
使用 HTTP 基本身份验证发出请求非常简单:
Run Code Online (Sandbox Code Playgroud)>>> from requests.auth import HTTPBasicAuth >>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass')) <Response [200]>事实上,HTTP Basic Auth 非常普遍,以至于 Requests 为使用它提供了一个方便的速记:
Run Code Online (Sandbox Code Playgroud)>>> requests.get('https://api.github.com/user', auth=('user', 'pass')) <Response [200]>在像这样的元组中提供凭据与上面的 HTTPBasicAuth 示例完全相同。
| 归档时间: |
|
| 查看次数: |
35551 次 |
| 最近记录: |