import hmac
import hashlib
import json
import requests
import time
from hashlib import sha1
import base64
from urllib.parse import quote
with open("config.json") as config_file:
    config = json.load(config_file)  
uri = "cns.api.qcloud.com/v2/index.php?"
SecretId = config["SecretId"]
SecretKey = config["SecretKey"]

# 所需要的参数
param_dict = {
    "Action": "DomainList",
    "Nonce": "233333",
    "SecretId": SecretId,
    "Timestamp": str(int(time.time()))

}

# 生成请求字符串
result_str = ("Action=" + param_dict["Action"]
              + "&Nonce="+param_dict["Nonce"]
              + "&SecretId="+param_dict["SecretId"]
              + "&Timestamp="+param_dict["Timestamp"]
              )

# 拼接签名原文字符串
requestStr = "GET"+uri+result_str

# 签名
signStr = requestStr.encode("UTF-8")
SecretKey = SecretKey.encode("UTF-8")
hashed = hmac.new(SecretKey, signStr, sha1).hexdigest()

# base64加密,同时进行URL编码
base64Data = quote(base64.b64encode(hashed.encode("utf-8")))

data = requests.get("https://"+uri+result_str+"&Signature="+base64Data).text
print(data)


# -------------------输出------------------
# {
# "code":4100,
# "message":"\u8eab\u4efd\u8ba4\u8bc1\u5931\u8d25
#            \uff0c\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u5931\u8d25",
# "codeDesc":"AuthFailure"
# }
# ------------------------------------------
用户6879011用户6879011提问于
zqfan回答于
推荐

推荐使用SDK进行调用:https://github.com/QcloudApi/qcloudapi-sdk-python

如果要自己写,也请参考下签名文档中python的代码示例,或者SDK中的源码:https://github.com/QcloudApi/qcloudapi-sdk-python/blob/master/QcloudApi/common/sign.py

API2.0不再推荐使用了,请尽量用API3.0吧

回答过的其他问题

文本翻译api不能用吗?

推荐

可能是你本地的php环境配置的证书路径有问题,参考这里看看吧https://github.com/tencentcloud/tencentcloud-sdk-php#%E8%AF%81%E4%B9%A6%E9%97%AE%E9%A2%98

【建议】【API】使用API创建子网的时候允许指定已有路由表?

推荐

控制台使用的是新的接口,批量创建子网,https://cloud.tencent.com/document/product/215/31960,可以指定路由表。terraform开发的时候是基于api2.0开发的,还没有这个接口,因此暂时无法使用

 如何使用人工智能合成人声?

智能语音服务昨天刚上线了语音合成的功能,可以了解一下:https://cloud.tencent.com/document/api/441/18086

为何我使用.Net API 生成的临时密钥无法进行文件操作?

推荐
cos有自己的密钥系统,应该是在控制台上,访问管理,API密钥,项目密钥那里,或者去看看cos的文档是如何说明的吧。 你通过ms接口创建cos临时密钥,也许的确会被限制一些,这个需要ms这个产品的人回答下比较好。 生成临时密钥和哪个SDK无关,可以直接在线调用也可以生成,通过AP...... 展开详请

请问有创建项目的sdk吗?

推荐

这是api2.0的接口,使用对应的sdk,代码托管在http://github.com/qcloudapi

调用云解析API提示4100鉴权失败?

推荐
UTF8,并且注意要大写,例如%8E而不是%8e,官方文档中应该有提到这些注意事项的 image.png ... 展开详请

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励