API接入

币安API怎么加IP白名单?云服务器与动态IP配置

币安 API IP 白名单配置全方案:云主机静态IP、家用宽带动态IP、多IP负载均衡、VPN/代理出口IP、IPv6支持情况,附查 IP 脚本与常见误区排查。

币安 API 的 IP 白名单是 最关键的安全措施:配置后只有来自指定 IP 的请求才能使用此密钥操作账户,即使密钥泄漏盗号者也无法下单。本文覆盖云主机固定 IP、家用宽带动态 IP、双出口 IP、VPN 代理、IPv6 五种场景的完整配置方案,附查询当前出口 IP 的脚本和 10 个常见误区。还没有币安账户的请到 币安官网 完成注册;新用户可 免费注册 开户。

一、IP 白名单核心规则

规则 说明
单密钥最多 IP 数 30 个
IP 类型 仅支持 IPv4(IPv6 暂不支持)
CIDR 网段 不支持(必须逐个 IP 填写)
生效时间 保存后 立即生效(不超过 30 秒)
提币权限 必须配合 IP 白名单(不限 IP 时提币权限强制关闭)
修改频率 无限制,随时可调整

重要没有 IP 白名单的密钥永远无法开启提币权限,这是币安强制安全规则。

二、场景 1:云服务器(静态 IP)

最理想的场景。在创建 API 时直接填写云主机的公网 IP。

1. 查询云主机公网 IP

# 方法一:直接问外部服务
curl -4 ifconfig.me
curl -4 ipv4.icanhazip.com
curl -4 api.ipify.org

# 方法二:阿里云元数据
curl http://100.100.100.200/latest/meta-data/eipv4

# 方法三:AWS 元数据
curl http://169.254.169.254/latest/meta-data/public-ipv4

2. 在币安配置

币安 API 管理页 → 编辑密钥 → Restrict access to trusted IPs only (Recommended) → 输入 IP 地址 → 保存。

多个 IP 用 逗号分隔

1.2.3.4,5.6.7.8,9.10.11.12

3. 云主机注意事项

  • 弹性 IP 被解绑后不再保留,务必在币安 IP 白名单中同步删除
  • 自动伸缩组 的实例公网 IP 会变动,不适合做 API 白名单,建议用 NAT 网关 固定出口 IP
  • CDN 反代 不适用——币安看到的是代理商的 IP,你后端服务器的 IP 不会直接到达

三、场景 2:家用宽带(动态 IP)

家用宽带 IP 可能每 24 小时变一次,有几种应对方案:

方案 A:不限 IP(最简单但风险高)

币安 API 管理页选择 Unrestricted (Less Secure)。缺点:

  • 提币权限自动关闭
  • 一旦密钥泄漏无防护

适合仅用于读取数据的场景(只勾 Enable Reading)。

方案 B:动态更新 IP 白名单(中等方案)

币安不提供更新白名单的 API,必须人工登录网页改。所以完全自动化不可行。

可以做 半自动

  1. 每小时检测当前出口 IP
  2. 与配置的白名单 IP 对比
  3. 不一致时发送 Server 酱或 Telegram 通知
  4. 手动登录币安更新

脚本示例:

import requests
import time

CURRENT_WHITELIST = {"1.2.3.4"}  # 你在币安设置的 IP
TG_BOT = "TELEGRAM_BOT_TOKEN"
TG_CHAT = "YOUR_CHAT_ID"

def get_current_ip():
    return requests.get("https://api.ipify.org").text.strip()

def notify(msg):
    requests.get(
        f"https://api.telegram.org/bot{TG_BOT}/sendMessage",
        params={"chat_id": TG_CHAT, "text": msg}
    )

last_ip = None
while True:
    ip = get_current_ip()
    if ip != last_ip:
        if ip not in CURRENT_WHITELIST:
            notify(f"IP 变更为 {ip},请登录币安更新白名单")
        last_ip = ip
    time.sleep(3600)

方案 C:DDNS + 固定入口(推荐)

用一台固定 IP 的云服务器作为 反向代理/跳板

家用电脑 → SSH 隧道 → 云服务器 → 币安 API

在云服务器(例如阿里云轻量 30 元/月)部署:

# 家用电脑建立 SSH 隧道
ssh -N -L 8443:api.binance.com:443 [email protected]

然后在代码中把 BASE_URL 改为 https://localhost:8443(需处理 TLS 证书验证)。云服务器固定 IP 加入白名单 即可。

更优雅的方案是搭 WireGuard VPN,把家用电脑所有流量走 VPS 出口。

四、场景 3:多服务器负载均衡

生产级量化策略往往部署在多个服务器上做容灾:

主策略: 阿里云东京 A 区 (IP: 47.1.2.3)
备策略: AWS 东京 B 区 (IP: 54.4.5.6)
监控服务: 腾讯云香港 (IP: 150.7.8.9)

在币安填写所有 3 个 IP,用逗号分隔:

47.1.2.3,54.4.5.6,150.7.8.9

安全加强:给每个服务器创建 独立密钥 而不是共享一个。这样万一某台机器被入侵,只需撤销该 Key,其它机器照常运行。

五、场景 4:VPN / 代理出口 IP

1. 确认代理链的最终出口 IP

VPN / 代理会让流量从代理出口而不是你的真实 IP 出去:

# 走代理查询
curl -x http://proxy.example.com:8080 ifconfig.me
# 或走 VPN 后查询
curl ifconfig.me

以代理出口 IP 为准 加入白名单。

2. 注意共享出口的风险

商业代理 的出口 IP 可能被成千上万人共用。这类 IP:

  • 经常出现在币安的黑名单(因为有人用它做刷单或洗钱)
  • 一旦某人触发风控,整个出口 IP 被封,所有共用者受影响
  • 不符合币安 KYC 合规要求,可能触发账号审查

商业代理不推荐用于 API 交易。自建 VPS + 专属 IP 才是稳妥方案。

六、场景 5:Docker / Kubernetes 容器

容器的出口 IP 由 宿主机网络配置 决定:

1. 主机网络模式

# Docker Compose
services:
  bot:
    image: mybot
    network_mode: "host"  # 容器使用主机 IP

此时容器的出口 IP = 宿主机公网 IP。

2. 桥接网络 + NAT

services:
  bot:
    image: mybot
    networks:
      - default

Docker 默认通过 NAT 转发,出口仍是宿主机公网 IP(除非宿主机有多张网卡分别指向不同出口)。

3. Kubernetes

通过 NAT 网关或 Egress Gateway 统一出口 IP。云厂商(GKE、EKS、阿里云 ACK)都支持 出口固定 IP 功能。

七、IP 白名单失效的常见原因

症状 原因 解决
新 IP 不在白名单,报 -2015 IP 变了没同步 登录币安更新
云主机重启后 IP 不变但调用失败 VPC 路由或防火墙阻断 检查出站规则
curl 正常,Python 调用失败 Python 走 socks5 代理 检查 http_proxy 环境变量
本机 curl ifconfig.me 显示 A,但币安报 B 多网卡,出口路由不同 route -n 检查
添加后立即测试失败 缓存未刷新 等 30 秒重试
VPN 断线后脚本出口变家用 IP VPN 未做 kill switch 配置 iptables 阻断 VPN 外流量

八、双重保险:应用层 IP 验证

即使币安已限制 IP,你的程序也应该 启动时自检

import requests

EXPECTED_IP = "1.2.3.4"

def verify_ip():
    current = requests.get("https://api.ipify.org").text.strip()
    if current != EXPECTED_IP:
        raise SystemExit(f"出口 IP 异常: {current} ≠ {EXPECTED_IP},拒绝启动")
    print(f"IP 验证通过: {current}")

verify_ip()
# 之后才初始化 Binance 客户端

九、常见问题 FAQ

Q1: 一个密钥可以设置多少个 IP?

A: 最多 30 个,通过逗号分隔填入同一个输入框。如果你有超过 30 个服务器,建议按服务器组创建多个密钥。

Q2: 中国大陆 IP 可以加入白名单吗?

A: 可以填写任何 IPv4 地址,币安服务器不会拒绝特定地区 IP 进入白名单。但大陆直连 binance.com 网络不稳定,建议用香港或新加坡 VPS 作为中转。

Q3: IP 白名单和防火墙有什么区别?

A: IP 白名单是 币安端 的访问控制(限制请求来源);防火墙是 你的服务器端 的访问控制(限制流量进入)。两者互补,都应该配置

Q4: 我的 VPS 支持 IPv6,币安不支持怎么办?

A: 币安暂不支持 IPv6 白名单。解决方法:curl -4 强制走 IPv4,或在系统层禁用 IPv6:

# Linux
sysctl -w net.ipv6.conf.all.disable_ipv6=1

Q5: 白名单设置后,行情查询也要从该 IP 吗?

A: 是的。IP 白名单会限制所有带 X-MBX-APIKEY 的请求,包括签名接口和 USER_DATA 接口。公开行情(如 /ticker/price 无 Header)不受限制。

看完 IP 白名单方案,回到 分类导航 查看「API接入」分类其它安全加固教程。

继续浏览

对币安使用还有疑问?回到分类页查找同主题的其它教程。

分类导航

相关教程

币安API怎么申请?密钥签名一般要怎么生成 2026-04-14 币安Spot API怎么用?从零到第一单的可运行代码 2026-04-14 币安Futures和Spot API有什么区别?端点参数权重对比 2026-04-14 币安API会被封IP吗?限频策略与权重计算详解 2026-04-14