幣安 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,必須人工登入網頁改。所以完全自動化不可行。
可以做 半自動:
- 每小時檢測當前出口 IP
- 與配置的白名單 IP 對比
- 不一致時傳送 Server 醬或 Telegram 通知
- 手動登入幣安更新
指令碼示例:
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接入」分類其它安全加固教程。