python - 用 python 签署请求到币安未来
问题描述
我一直在努力使用签名向币安未来发送签名请求。
我在 StackOverflow 上找到了示例代码(“使用 SHA56 和 Python 请求的 Binance API 调用”),并给出了一个答案,提到使用 hmac,如下所示:但不幸的是,我仍然不知道如何编写这个示例。谁能展示这个例子的代码应该是什么样子?我对签名请求感到非常不舒服。非常感谢您的理解和您的帮助建议:
params = urlencode({
"signature" : hashedsig,
"timestamp" : servertimeint,
})
hashedsig = hmac.new(secret.encode('utf-8'), params.encode('utf-8'), hashlib.sha256).hexdigest()
原始示例:
import requests, json, time, hashlib
apikey = "myactualapikey"
secret = "myrealsecret"
test = requests.get("https://api.binance.com/api/v1/ping")
servertime = requests.get("https://api.binance.com/api/v1/time")
servertimeobject = json.loads(servertime.text)
servertimeint = servertimeobject['serverTime']
hashedsig = hashlib.sha256(secret)
userdata = requests.get("https://api.binance.com/api/v3/account",
params = {
"signature" : hashedsig,
"timestamp" : servertimeint,
},
headers = {
"X-MBX-APIKEY" : apikey,
}
)
print(userdata)
解决方案
正确的方法是:
apikey = "myKey"
secret = "mySecret"
servertime = requests.get("https://api.binance.com/api/v1/time")
servertimeobject = json.loads(servertime.text)
servertimeint = servertimeobject['serverTime']
params = urlencode({
"timestamp" : servertimeint,
})
hashedsig = hmac.new(secret.encode('utf-8'), params.encode('utf-8'),
hashlib.sha256).hexdigest()
userdata = requests.get("https://api.binance.com/api/v3/account",
params = {
"timestamp" : servertimeint,
"signature" : hashedsig,
},
headers = {
"X-MBX-APIKEY" : apikey,
}
)
print(userdata)
print(userdata.text)
确保将 thesignature
作为最后一个参数,否则请求将return [400]
...
不正确:
params = {
"signature" : hashedsig,
"timestamp" : servertimeint,
}
正确的:
params = {
"timestamp" : servertimeint,
"signature" : hashedsig,
}
推荐阅读
- mongodb - 这是在 MongoDB 中建模数据的正确方法吗?
- java - 公共类型 PlayerQuitListener 必须在自己的文件中定义
- assembly - 了解教授对装配作业的回答
- python - Pandas 可以分箱成动态数量的分箱吗?
- python-3.x - 在观察者设计模式中,主题类是如何存储的?
- javascript - 按值查找条目键的最佳方法
- rest - API 测试:我可以通过增加单元测试来减少 API 功能测试的工作量吗?我可以用单元测试替换功能测试吗?
- visual-studio - 强制 Visual Studio 从光标处查找
- powershell - 从 CSV 创建映射以获取 AD 用户
- python - 资源警告来自哪里?