您的位置:首页 > 游戏攻略 > 币安API怎么使用?密钥配置与行情接口调用教程

币安API怎么使用?密钥配置与行情接口调用教程

作者:互联网  时间: 2026-07-29 09:35:30  

先说个最省心的结论:如果只是查现货价格、看K线,根本不用创建API Key;只有要读账户数据、查订单、做交易这类需要身份验证的接口,才得用到密钥和签名。先把公开行情的接口调通,再考虑要不要创建密钥,这是最稳的上手思路。

币安官方注册地址:

币安APP下载地址:

币安开发者文档列出的现货 REST API 基础接入地址

先搞清楚:查公开行情根本不用密钥

币安现货的REST API分两类:公开接口和鉴权接口。安全类型标了NONE的行情接口,直接就能请求;要是USER_DATATRADE这类接口,才需要API Key,其中要签名的接口还得传timestamprecvWindowsignature这几个参数。

查公开行情可以用data-api.binance.vision这个地址;通用的现货REST接口就用api.binance.com。接口返回的是JSON格式,时间字段默认都是毫秒级的。提醒一句:主机名、接口路径、参数全都要以币安官方开发者文档为准,别从聊天记录或者第三方代码片段里抄什么“备用接口”,不靠谱。

创建密钥记住:只开必须的权限就行

要是真的需要查账户、订单这类数据,就登录币安账户,走Account → API Management → Create API这个路径。按官方现在的要求,创建前账户得完成身份认证、开了双重验证,还要满足页面列的所有账户激活条件;要是页面提示不满足,就先停手别创建,千万别绕开限制。

币安帮助中心的 API Key 创建教程页面

第一次对接的话,选系统生成的HMAC密钥就行;要是做长期服务,可以评估下Ed25519。币安现在更推荐Ed25519,性能和安全性都更好,但这两种方案的签名代码不一样,不能混着用。不管选哪种,权限都只开你当下要用的:只是查行情就别创建密钥;做账户看板就只开读取权限;要做交易程序的话,单独建个密钥再开现货交易权限。提现权限一定要保持关闭,还要加上可信IP白名单。

Secret Key千万别写进源码、别提交到Git,也别发到聊天框里。最好放到密钥管理器、受保护的配置文件或者环境变量里;要是不小心把密钥弄到公开仓库、日志、截图或者工单里了,赶紧删掉旧的,重新生成新的。

币安现货 API 文档中的请求安全类型和权限说明

先拿单价接口做最小测试

最小测试就用GET /api/v3/ticker/price这个接口。传个symbol=BTCUSDT的参数,正常返回的结果里会有symbolprice这两个字段。这一步根本不用API Key,也不该出现权限或者签名相关的错误。

币安现货 Symbol price ticker 接口路径和返回示例

下面的示例用的是Python 3和requests库。第一次跑的话,先在你当前的Python环境里装依赖;要是做生产项目,一定要放到独立的虚拟环境里,别直接用系统自带的Python当项目环境。

python3 -m pip install requests
import requests

SCHEME = "https"
BASE_URL = f"{SCHEME}://data-api.binance.vision"

response = requests.get(
    f"{BASE_URL}/api/v3/ticker/price",
    params={"symbol": "BTCUSDT"},
    timeout=10,
)
response.raise_for_status()
data = response.json()
print(data["symbol"], data["price"])

要是能正常输出BTCUSDT和一串价格,就说明你的网络、主机名、路径、参数全都是对的。如果返回-1121错误,不是密钥的问题,是你填的交易对名称不对,先去调/api/v3/exchangeInfo核对下可用的交易对符号。

再用K线接口验证参数

查K线用的是GET /api/v3/klines接口。最少得传交易对和周期这两个参数;limit是用来控制返回多少根K线的。每根K线都是一个数组,前6项分别是开盘时间、开盘价、最高价、最低价、收盘价、成交量,别把数组下标当成字段名瞎猜哈。

币安现货 Kline Candlestick data 接口路径和示例响应

response = requests.get(
    f"{BASE_URL}/api/v3/klines",
    params={
        "symbol": "BTCUSDT",
        "interval": "1h",
        "limit": 10,
    },
    timeout=10,
)
response.raise_for_status()

for row in response.json():
    open_time, open_price, high, low, close, volume = row[:6]
    print(open_time, open_price, high, low, close, volume)

正常情况下会返回10组数组,而且每组的字段顺序都是固定的。要是你的程序需要长期轮询接口,一定要记得读响应头里的请求权重;要是收到HTTP 429错误,赶紧停手退避,按照Retry-After的提示等够时间再试,一直硬请求的话会触发HTTP 418,直接被自动封禁。

私有接口一定要做签名

比如要读账户信息,咱们就用系统生成的HMAC密钥举例:把API Key放到X-MBX-APIKEY请求头里,Secret Key只在本地用来算HMAC-SHA256签名。参数里得先带上当前的毫秒时间戳,还有一个数值不大的recvWindow,然后对编码后的查询字符串做签名就行。

import hashlib
import hmac
import os
import time
from urllib.parse import urlencode

API_KEY = os.environ["BINANCE_API_KEY"]
API_SECRET = os.environ["BINANCE_API_SECRET"]
PRIVATE_BASE = f"{SCHEME}://api.binance.com"

params = {
    "timestamp": int(time.time() * 1000),
    "recvWindow": 5000,
}
query = urlencode(params)
params["signature"] = hmac.new(
    API_SECRET.encode(),
    query.encode(),
    hashlib.sha256,
).hexdigest()

response = requests.get(
    f"{PRIVATE_BASE}/api/v3/account",
    headers={"X-MBX-APIKEY": API_KEY},
    params=params,
    timeout=10,
)
response.raise_for_status()
print(response.json())

要是返回-1021错误,先同步下你本机的时间,再用/api/v3/time接口对照下服务器的时间;要是返回-2015,就去核对API Key对不对、IP在不在白名单里、有没有开对应的读取权限。千万别靠把所有权限都打开来“排错”,那本来只是配置问题,最后会变成账户安全风险。

碰到这些情况,直接停手别操作

  • 不管是谁找你要API Key、Secret Key、验证码、私钥文件,或者让你开屏幕共享,直接结束沟通,别搭理。
  • 要是示例代码让你关IP限制、开提现权限,或者把密钥写到公开仓库里,千万别照做。
  • 要是域名不是币安官方的、证书有异常,或者页面是从群聊短链跳过来的,绝对别创建密钥。
  • 接口报错的话,先核对时间、交易对、权限、IP和请求频率,别一个劲反复重试签名请求。

最后再把边界说清楚:查公开行情的话,先用不需要密钥的接口把价格、K线都测通;真的需要账户数据了,再创建权限最小的密钥,同时用IP白名单、环境变量、签名校验这些手段把风险降到最低。只要Secret Key离开了你的受控环境,旧密钥就必须立刻作废。

最新游戏

更多

Copyright©2010-2019. All rights reserved | 波波三国游戏官网|[email protected]

备案编号:湘ICP备2022015115号-4