下面开始讲解“Python 编码Basic Auth使用方法简单实例”的攻略:
1. 什么是Basic Auth
Basic Auth
是一种 HTTP 认证机制,它是通过 Authorization
头传递用户名和密码的方式来完成身份验证。在 HTTP 请求头中,Authorization 头的内容格式通常是:“Basic base64(username:password)”,其中 base64(username:password)
的值是将用户名和密码使用 base64 编码后的结果。
2. Basic Auth 的使用方法
Python 中使用 Basic Auth 可以采用第三方库 requests
或是标准库 urllib
。
2.1 使用 requests 库
使用 requests 库发送带有 Basic Auth 认证的请求,只需要在请求头中添加 Authorization 头即可,具体代码示例如下:
import requests
from requests.auth import HTTPBasicAuth
username = 'username'
password = 'password'
url = 'https://example.com/api/data'
response = requests.get(url, auth=HTTPBasicAuth(username, password))
上述代码中,auth=HTTPBasicAuth(username, password)
表示使用 HTTPBasicAuth 对象进行认证。
2.2 使用 urllib 库
使用 urllib 库发送带有 Basic Auth 认证的请求,可以自定义一个包含 Authorization 头的请求头,具体代码示例如下:
import urllib.request
import base64
username = 'username'
password = 'password'
url = 'https://example.com/api/data'
headers = {
'Authorization': 'Basic ' + base64.b64encode((username + ':' + password).encode()).decode()
}
req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)
上述代码中,headers
变量是一个包含 Authorization 头的请求头,其中的 'Basic ' + base64.b64encode((username + ':' + password).encode()).decode() 用于构造 base64 编码的认证信息。
3. 示例
下面给出两个使用示例:
3.1 使用 requests 库发送带有 Basic Auth 认证的 GET 请求
import requests
from requests.auth import HTTPBasicAuth
username = 'admin'
password = '123456'
url = 'https://httpbin.org/basic-auth/admin/123456'
response = requests.get(url, auth=HTTPBasicAuth(username, password))
print(response.text)
上述代码中,我们向 https://httpbin.org/basic-auth/admin/123456
发送了一个带有 Basic Auth 认证的 GET 请求。在这个网站中,如果没有认证信息,将会返回401错误。通过上面的代码,我们向这个网站提供了正确的用户身份信息,并能够正确得到响应。
3.2 使用 urllib 库发送带有 Basic Auth 认证的 POST 请求
import urllib.request
import base64
import json
username = 'admin'
password = '123456'
url = 'https://httpbin.org/post'
headers = {
'Authorization': 'Basic ' + base64.b64encode((username + ':' + password).encode()).decode(),
'Content-Type': 'application/json'
}
data = {
'name': 'John',
'age': 20
}
req = urllib.request.Request(url, headers=headers, data=json.dumps(data).encode())
response = urllib.request.urlopen(req)
print(response.read().decode())
上述代码中,我们向 https://httpbin.org/post
发送了一个带有 Basic Auth 认证的 POST 请求,并且在请求体中添加了一个 JSON 对象。同样,我们也能够获得正确的响应结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 编码Basic Auth使用方法简单实例 - Python技术站