幣安官網對一般用戶而言就是 www.binance.com,但對開發者來說情況要複雜得多:真正寫程式碼要連的不是前台頁面,而是 api.binance.com、stream.binance.com、fapi.binance.com 這一串主機名。很多新接入的工程師被釣魚文件和山寨 SDK 坑過,核心原因就是沒把「面向用戶的官網」和「面向開發者的官網」分開看。先從幣安官網完成帳戶與 API Key 的準備,再把幣安官方APP裝上用於二次驗證推送,iPhone 端的設定可以參考 iOS安裝教程。
下面完全從開發者視角把幣安官網的入口結構講清楚,包含文件入口識別、正式環境與 Testnet 區分、SDK 下載源校驗、WebSocket 主機清單以及 changelog 訂閱方式。
幣安開發者官網的幾個正確入口
面向開發者的文件不掛在 www.binance.com 的一級導覽列裡,而是分散在幾個獨立子網域和 GitHub 組織下。只認這幾個入口就不會走錯。
主文件站 developers.binance.com
developers.binance.com 是幣安開發者入口的統一門戶,下面聚合了 Spot、Futures、Margin、Wallet、Staking 各條介面的參考手冊。頁面右上角可以切換 Change Log,每次 API 更新會有精確到分鐘的時間戳記。
這個網域的 TLS 證書簽發主體是 Binance Holdings Ltd,和主站 binance.com 走同一套證書鏈。如果你打開之後證書主體對不上,基本就是被劫持了。
GitHub 組織 binance
官方程式碼倉庫集中在 github.com/binance 組織下,這是驗證 SDK 和範例程式碼真偽的最高權威來源。幾個常用的倉庫:
- binance-spot-api-docs:現貨 REST/WebSocket 協定規範
- binance-futures-connector-python:U 本位合約 Python 連接器
- binance-connector-node:Node.js 官方 SDK
- binance-api-postman:Postman 除錯集合
GitHub 組織頁下方可以看到 Verified 徽章,這個徽章要透過 DNS TXT 記錄綁定到 binance.com 才能獲得,山寨組織仿不出來。
幣安學院的技術文章入口
academy.binance.com 是內容站,不是介面站,但它下面的 "Developer" 標籤會發布協定設計解讀、費率結構變更、撮合引擎行為說明這類深度內容,對理解介面背後的業務邏輯很有幫助。
正式環境和 Testnet 主機名的區分方式
幣安給開發者準備了完整的 Testnet 環境,但 Testnet 和正式環境的主機名非常容易混淆。接錯主機會導致兩種災難性後果:用真錢去測試,或者用測試錢去實盤。
現貨介面主機清單
| 用途 | 正式環境 | Testnet |
|---|---|---|
| REST API | api.binance.com | testnet.binance.vision |
| WebSocket Stream | stream.binance.com:9443 | stream.testnet.binance.vision:9443 |
| WebSocket API | ws-api.binance.com:443 | ws-api.testnet.binance.vision:443 |
特別注意 Testnet 用的是 binance.vision 這個獨立網域,不是 binance.com 的子網域。這是幣安故意為之,避免正式金鑰和測試金鑰因為網域接近而誤用。
合約介面主機清單
| 用途 | 正式環境 | Testnet |
|---|---|---|
| U 本位 REST | fapi.binance.com | testnet.binancefuture.com |
| U 本位 WS | fstream.binance.com | stream.binancefuture.com |
| 幣本位 REST | dapi.binance.com | testnet.binancefuture.com |
| 幣本位 WS | dstream.binance.com | dstream.binancefuture.com |
合約 Testnet 走的是 binancefuture.com,又是一個獨立網域。看到程式碼裡 host 寫著 binance.com 但 path 裡帶 /fapi,大概率是舊版本 SDK 用了統一網域轉發,新版本都拆開了。
API Key 在兩個環境不通用
正式環境的 API Key 無法用於 Testnet,反之亦然。Testnet 的 Key 在 testnet.binance.vision 頁面用 GitHub 帳號登入產生;正式 Key 則在幣安官網帳戶安全頁面建立。兩套體系完全隔離,洩露 Testnet Key 不會影響真實資金。
SDK 下載源的真偽校驗
開發者生態裡最常見的攻擊是 pip 仿冒套件和 npm 仿冒套件,仿冒的命名極具迷惑性。下載 SDK 一定要走以下幾個正規來源。
Python 套件的正確名稱
幣安沒有一個叫 "binance" 的官方 Python 套件,想連介面要用下面這兩個之一:
- binance-connector:官方維護,PyPI 上發布者是 Binance
- python-binance:社群老牌函式庫,作者 Sam McHardy,被官方引用
下面這些名字都是仿冒:binance-api、binancepy、pybinance、binance-sdk(注意帶連字號的早期偽裝版本)。PyPI 上可以查發布者電子郵件網域,官方套件的發布者電子郵件一定是 @binance.com。
套件完整性校驗
pip 從 2023 年開始支援 hash 校驗,在 requirements.txt 裡鎖死雜湊值可以防止中間人替換:
binance-connector==3.7.0 \
--hash=sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
雜湊值可以在 PyPI 頁面的 "Download files" 下找到,對比無誤再安裝。
Node.js 套件的命名
npm 上官方套件的 scope 是 @binance/connector,帶 @binance 這個 scope 是 npm 層面做了組織驗證的,仿冒者無法註冊。不帶 scope 的 node-binance-api 是社群老函式庫,也相對可信,但不是官方。
Go 與 Rust 的情況
Go 官方沒有發布 SDK,現在主流的是社群維護的 adshao/go-binance,作者 adshao 是幣安早期的合作開發者,程式碼品質較高。Rust 方面官方也沒覆蓋,ccxt-rust 和 binance-rs 是兩個社群實作,使用前自行稽核。
WebSocket 長連線的運維細節
REST 介面用一次算一次,WebSocket 連上去要跑很久,運維層面的坑比 REST 多得多。
24 小時強制斷開
幣安現貨 WebSocket 有一條硬性規則:單條連線最多保持 24 小時,到點伺服器會主動斷開。開發者要實作斷線重連邏輯,最好在 23 小時左右主動重連,而不是等到被踢。
PING/PONG 心跳
伺服器每 3 分鐘發一次 PING 幀,客戶端必須在 10 分鐘內回 PONG,否則會被斷開。大部分 WebSocket 函式庫會自動處理,但有些底層實作不會,這種情況要手動 hook 心跳幀。
訂閱數量上限
單條連線最多訂閱 1024 個流,超過會收到錯誤碼 -1013。對於要同時監控大量交易對的系統,需要在客戶端做多連線分組。
組合流的寫法
組合流的 URL 格式是 stream.binance.com:9443/stream?streams=btcusdt@trade/ethusdt@kline_1m,多個流用斜線分隔。單流則是 stream.binance.com:9443/ws/btcusdt@trade,path 不一樣。
API 變更的追蹤方式
幣安 API 的變更頻率比多數交易所高,不訂閱變更日誌很容易踩到介面下線或者欄位含義變化。
官方 Change Log 位置
Change Log 在 binance-docs.github.io 和 developers.binance.com 兩處同步發布,歷史條目可以翻到 2017 年。每條變更都會註明 UPDATE、NEW、DEPRECATED 三種標籤。
GitHub Release 訂閱
github.com/binance/binance-spot-api-docs 倉庫可以 Watch → Releases only,每次協定文件提交會觸發電子郵件通知,比網頁輪詢更可靠。
預警電子郵件清單
API 重大變更會提前 2 週到 2 個月在帳戶註冊郵箱發通知。所以綁定 API Key 的帳戶一定要用常用郵箱,不要用臨時郵箱。
限頻策略調整
頻率限制屬於最容易靜默變更的部分。幣安在 HTTP 回應標頭裡會即時返回 X-MBX-USED-WEIGHT-1M,監控這個值的變化趨勢比翻文件更能及時感知策略調整。
安全接入清單
接入前檢查這幾條能避開 95% 的安全坑:
- IP 白名單必須開:API 管理頁面勾選 "Restrict access to trusted IPs only",不開等於在公網裸奔
- 權限最小化:唯讀金鑰和交易金鑰分開建立,提現權限預設不要勾選
- 金鑰不進程式碼庫:用環境變數或 Vault,在 CI 裡用 gitleaks 掃一遍避免誤提交
- 強制走 HTTPS:任何 HTTP 版本的 API 呼叫都要拒絕,防中間人
- 簽名用 HMAC-SHA256:參數按字典序拼接,timestamp 和 signature 順序別搞反
- recvWindow 不超過 5 秒:預設 5000ms,設太大等於給攻擊者更長的重放窗口
FAQ 常見問題
Q1:官網文件頁和 binance-docs.github.io 內容一樣嗎?
兩邊會短時間不同步。binance-docs.github.io 是 GitHub Pages,更新由程式碼提交觸發;developers.binance.com 是由官網 CDN 分發的靜態資源,兩者之間一般會差幾分鐘到幾小時。追最新協定看 GitHub Pages 更靠譜。
Q2:Testnet 上的訂單會影響真實帳戶嗎?
完全不會。Testnet 是獨立的撮合系統,資金是領取的測試幣,訂單簿也和主網隔離。唯一的相關性是行情資料來源於主網快照,所以價格走勢看起來和真實市場類似。
Q3:Python 套件 python-binance 和 binance-connector 選哪個?
看需求。binance-connector 是官方維護,介面覆蓋最新但 API 風格偏函數式;python-binance 是社群版本,封裝更抽象,同步非同步都支援,文件範例更豐富。正式環境建議 connector,快速原型用 python-binance。
Q4:WebSocket 斷線重連要做指數退避嗎?
要做。幣安在異常流量時會臨時封 IP,不做退避會反覆觸發封禁。推薦策略:首次 1 秒,之後每次 ×2,上限 60 秒,成功後重置計數。
Q5:幣安有類似 OKX 的 Demo Trading 嗎?
有但叫法不同。現貨叫 Testnet(testnet.binance.vision),合約叫 Binance Futures Testnet(testnet.binancefuture.com)。兩者入口和 API Key 體系都獨立,不像 OKX 是透過同一個帳戶切換模擬盤。