42

私は API に従っており、ユーザー ID とパスワードの Base64 認証を使用する必要があります。

「ユーザー ID とパスワードは、両方を連結してから Base64 エンコードする必要があります」

次に例を示します

'userid:password'

次に、「「認証ヘッダー」にエンコードされた値を提供する」と続きます。

'たとえば: Authorization: BASIC {Base64 でエンコードされた値} '

これをpython apiリクエストに書き込むにはどうすればよいですか?

z = requests.post(url, data=zdata )

ありがとう

4

6 に答える 6

95

requests ライブラリにはBasic Auth がサポートされており、自動的にエンコードされます。Python replで次を実行することでテストできます

from requests.auth import HTTPBasicAuth
r = requests.post(api_URL, auth=HTTPBasicAuth('user', 'pass'), data=payload)

このエンコードを確認するには、次のように入力します。

r.request.headers['Authorization']

出力:

u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4'
于 2014-02-21T21:19:36.027 に答える
57

次のようにして、データをエンコードし、リクエストを行うことができます。

import requests, base64

usrPass = "userid:password"
b64Val = base64.b64encode(usrPass)
r=requests.post(api_URL, 
                headers={"Authorization": "Basic %s" % b64Val},
                data=payload)

Authorization フィールドに「BASIC」という単語を追加する必要があるかどうかはわかりません。APIリンクを提供すると、より明確になります。

于 2013-08-09T02:16:36.027 に答える
1

使用することをお勧めします:

import request    
auth = ('username', 'password')
r = requests.post(url, auth=auth)

または

import request
from requests.auth import HTTPBasicAuth
auth = HTTPBasicAuth('username', 'password')
r = requests.post(url, auth=auth)

https://2.python-requests.org/en/master/user/authentication/#basic-authentication

于 2021-11-06T00:33:33.217 に答える