0718_还是授权的一些记录

文章目录

    • 对原始签名进行河西和编码
    • 授权字符串编码
    • 将字典编码成为url

这段代码定义了一个名为 assemble_auth_url的函数,

该函数接受四个参数:

  • request_url(请求的URL)、

  • method(HTTP方法,如GET或POST)

  • api_key(API密钥)

  • api_secret(API密钥的密钥)。


接下来的第一行代码使用urlparse函数解析request_url,获取其中的主机名、路径等信息,并将其保存到变量u中。

u = urlparse(request_url)

下一行代码从变量u中获取主机名,并将其保存到变量host中。

host = u.hostname

接下来的代码从变量u中获取请求的路径,并将其保存到变量path中。

path = u.path

下一行代码获取当前时间,并将其保存到变量now中。

now = datetime.now()

接下来的代码使用mktime函数将当前时间转换为Unix时间戳,并使用format_date_time函数将其格式化为HTTP日期时间格式。

date = format_date_time(mktime(now.timetuple()))

接下来的代码创建一个字符串变量signature_origin,其中包含主机名、日期、请求方法和请求路径,并使用\n进行分隔。

signature_origin = "host: {}\ndate: {}\n{} {} HTTP/1.1".format(host, date, method, path)

对原始签名进行河西和编码

接下来的代码使用hmachashlib模块对signature_origin进行哈希,并使用base64模块对哈希结果进行编码。

signature_sha = hmac.new(api_secret.encode('utf-8'), signature_origin.encode('utf-8'),
                         digestmod=hashlib.sha256).digest()
signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8')

授权字符串编码

下一行代码创建一个字符串变量authorization_origin,其中包含API密钥、算法、请求头和签名,并使用\n进行分隔。

authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % (
    api_key, "hmac-sha256", "host date request-line", signature_sha)

接下来的代码使用base64模块对authorization_origin进行编码。

authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')

将字典编码成为url

最后,代码创建一个字典values,其中包含主机名、日期和授权标头,将其编码为URL查询字符串,并将其返回作为结果。

values = {
    "host": host,
    "date": date,
    "authorization": authorization
}
return request_url + "?" + urlencode(values)

你可能感兴趣的:(思维链,python)