WEEX API Python SDK:如何端到端簽名並調用
在編寫代碼前,首先要明確一點:截至2026年7月,WEEX並未發布名為「weex-python-sdk」的官方獨立包。您實際上擁有兩種可行的路徑——使用requests庫配合WEEX的簽名規則直接調用REST接口,或者使用已集成WEEX的開源多交易所庫ccxt。本指南將完整演示這兩種路徑,並重點講解集成中最容易出錯的兩個環節:如何對請求進行簽名,以及如何保障密鑰安全。
這是一份可直接複製到項目中的構建筆記,而非接口字典。WEEX現貨和合約API目前處於V3(BETA)版本,合約仍提供V2版本;下文代碼均基於現貨V3版本。
「WEEX API Python SDK」的實際含義
嚴格來說,它並非一個官方認證的軟件包,而是指「一個與WEEX接口通信的Python客戶端」。WEEX提供涵蓋現貨、合約、跟單和經紀商產品的REST和WebSocket接口。任何能夠發送HTTP請求並計算HMAC簽名的語言都可以進行集成。

在實踐中,「Python SDK」通常有三種形式:
- 輕量級手寫封裝 —
requests加上hmac,僅需幾十行代碼,依賴項最少,控制力最強。 - ccxt統一庫 —
pip install ccxt,將WEEX視為ccxt支持的100多家交易所之一,跨平台共享方法名稱。 - WebSocket客戶端 — 使用
websocket-client訂閱實時行情或私有頻道。
API簡介本身建議開發者遵循文檔中的架構並維護版本化的客戶端——換句話說,SDK需要您自行組裝,無需等待官方版本。
準備工作:創建API Key並設置權限
在調用前,請先在帳戶中創建API Key。根據集成準備文檔,一個帳戶最多可持有10組Key。每組Key包含三個憑證,缺一不可:
| 憑證 | 角色 | 注意事項 |
|---|---|---|
| APIKey | 身份標識 | 放入ACCESS-KEY請求頭 |
| SecretKey | 簽名密鑰 | 僅在本地用於簽名;嚴禁傳輸 |
| Passphrase | 自定義短語 | 丟失無法找回;放入ACCESS-PASSPHRASE |
權限設置至關重要:新創建的Key默認為唯讀——您必須手動啟用現貨交易權限才能下單。創建時請綁定IP白名單;文檔明確指出,未綁定IP的無限制Key存在安全風險。
如何調用:在Python中對請求進行簽名
根據簽名文檔,WEEX的簽名規則為:拼接時間戳 + 方法(大寫) + 請求路徑(含查詢參數) + 請求體,使用SecretKey進行HMAC SHA256計算,最後進行Base64編碼。時間戳單位為毫秒,任何與服務器時鐘偏差超過30秒的請求都將被拒絕。
以下代碼可直接運行(使用文檔中的深度接口示例):
import time, hmac, hashlib, base64, requests
API_KEY = "your-APIKey"
SECRET_KEY = "your-SecretKey"
PASSPHRASE = "your-Passphrase"
BASE = "https://api-spot.weex.com" # 請根據官方StandardSpecifications文檔確認主機地址
def sign(ts, method, path, body=""):
prehash = f"{ts}{method.upper()}{path}{body}"
mac = hmac.new(SECRET_KEY.encode(), prehash.encode(), hashlib.sha256)
return base64.b64encode(mac.digest()).decode()
def request(method, path, body=""):
ts = str(int(time.time() * 1000))
headers = {
"ACCESS-KEY": API_KEY,
"ACCESS-SIGN": sign(ts, method, path, body),
"ACCESS-TIMESTAMP": ts,
"ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json",
}
url = BASE + path
if method == "GET":
return requests.get(url, headers=headers).json()
return requests.post(url, headers=headers, data=body).json()
# 公共行情數據無需簽名;此處展示簽名請求頭模式
print(request("GET", "/api/v3/market/depth?symbol=BTCUSDT&limit=20"))
陷阱:GET參數包含在path的查詢字符串中,POST使用JSON請求體,且您簽名的請求體必須與發送的請求體字節完全一致。鍵值順序不同或多出一個空格都會導致簽名失效——這是手寫客戶端中最常見的401錯誤來源。
-- 價格
使用ccxt快速入門(大多數人的首選)
如果您不想手動處理簽名,ccxt已經封裝了WEEX的現貨、合約(永續)和WebSocket,涵蓋80多種方法。只需幾行代碼即可獲取行情和訂單:
import ccxt # pip install ccxt
ex = ccxt.weex({
"apiKey": "your-APIKey",
"secret": "your-SecretKey",
"password": "your-Passphrase", # WEEX的Passphrase對應ccxt的"password"
})
print(ex.fetch_ticker("BTC/USDT")) # 行情數據
# print(ex.fetch_balance()) # 需要交易權限
# ex.create_order("BTC/USDT", "limit", "buy", 0.001, 30000)
優勢:今天調用WEEX的代碼,明天只需修改一行類名即可切換到其他平台。代價是ccxt是一個社區維護的抽象層——對全新WEEX接口的覆蓋可能會滯後,因此在追逐新功能時,請務必對照官方文檔核對字段。
實時數據:從Python連接WebSocket
輪詢REST接口很快會觸及頻率限制。對於實時數據,請使用WebSocket——公共頻道為wss://ws-spot.weex.com/v3/ws/public,私有頻道為.../private,後者使用相同的四個ACCESS-KEY / ACCESS-SIGN / ACCESS-TIMESTAMP / ACCESS-PASSPHRASE字段進行身份驗證(簽名字符串為時間戳 + /v3/ws/private)。
import json, websocket # pip install websocket-client
ws = websocket.create_connection("wss://ws-spot.weex.com/v3/ws/public")
ws.send(json.dumps({"method": "SUBSCRIBE", "params": ["BTCUSDT@ticker"], "id": 1}))
print(ws.recv())
服務器會定期發送ping消息;客戶端必須回覆{"method":"PONG","id":1},否則連接會斷開。字段詳情請參考WebSocket文檔。
安全嗎?權限與密鑰管理的實踐
API交易的安全性取決於您的密鑰管理,而非接口本身。幾乎所有的損失都源於密鑰處理不當,而非接口被攻破。實用清單如下:
- 最小權限原則 — 僅啟用當前策略所需的權限。唯讀Key永遠無法獲得交易權限;WEEX Key默認不具備提幣權限,這限制了密鑰洩漏後的風險。
- 綁定IP白名單 — 將Key鎖定在服務器的外網IP上,使洩漏的Key在其他地方無法使用。
- 密鑰不入代碼庫 — 使用環境變量或密鑰管理工具;嚴禁硬編碼、提交到Git或在客戶端代碼中發布。
- 開發與生產分離 — 兩套Key,互不干擾,便於事故排查。
- 定期輪換 — 週期性更換Key,並對簽名失敗和429錯誤進行報警。
預先設計好頻率限制:公共行情接口每2秒允許約20次請求,超過則返回HTTP 429;私有接口遵循每個Key的規則。在客戶端中構建重試和退避機制遠比事後救火有效。
快速參考
| 項目 | 值(截至2026年7月) |
|---|---|
| 接口類型 | REST + WebSocket |
| 當前版本 | 現貨/合約V3(BETA);合約亦有V2 |
| 認證請求頭 | ACCESS-KEY / ACCESS-SIGN / ACCESS-TIMESTAMP / ACCESS-PASSPHRASE |
| 簽名方式 | HMAC SHA256 + Base64 |
| 時間戳 | 毫秒;偏差超過30秒即拒絕 |
| 公共頻率限制 | 約20次請求/2秒,超額返回429 |
| 默認權限 | 唯讀(交易需手動啟用) |
| Python首選 | 手寫requests封裝,或ccxt |
總結
目前沒有官方的獨立WEEX API Python SDK,這並非障礙:簽名邏輯清晰(HMAC SHA256 + Base64),且ccxt為您提供了現成的統一入口。決定成敗的關鍵在於權限和密鑰管理——默認唯讀、綁定IP、密鑰不入庫——做好這些,WEEX API Python集成既快速又穩定。準備好後,請從集成準備文檔創建您的第一個Key。
延伸閱讀:ccxt的WEEX覆蓋情況記錄在其官方維基中。
常見問題解答
1. WEEX有官方Python SDK嗎?
截至2026年7月沒有。WEEX提供REST和WebSocket接口;在Python端,您可以編寫requests封裝或使用已集成WEEX的ccxt。
2. 我的調用一直返回簽名錯誤(401)——如何調試?
通常是以下三個原因之一:時間戳不是毫秒級或偏差超過30秒;簽名字符串順序錯誤(必須是時間戳+方法+路徑+請求體);或者POST請求中簽名的請求體與實際發送的請求體不一致。請逐一檢查。
3. WEEX的Passphrase在ccxt中填在哪裡?
填在password字段中。ccxt使用apiKey、secret和password來映射WEEX的APIKey、SecretKey和Passphrase。
4. 公共行情接口需要簽名嗎?
公共接口(如行情數據)通常不需要簽名;只有涉及帳戶或訂單的私有接口才需要完整的四個認證請求頭。公共接口仍受頻率限制。
5. 為什麼我的新API Key無法下單?
因為新Key默認為唯讀。創建或編輯Key時,請手動啟用現貨交易權限,並同時綁定IP白名單。
風險提示
數字資產波動劇烈,自動化交易可能因策略缺陷、市場劇變或系統故障導致部分或全部本金損失。API交易增加了特定風險:未綁定IP的洩漏Key可能讓攻擊者操作您的帳戶;高槓桿合約會放大損失;頻率限制(429)或網絡中斷可能導致訂單未成交或撤單失敗。請應用最小權限原則,綁定IP白名單,妥善保管SecretKey和Passphrase,並在生產環境前進行充分的小額測試。本文僅為技術集成指南,不構成投資建議。
本內容僅供參考,不構成任何金融、投資、法律或稅務建議。文中提及的任何活動、獎勵、線上活動或相關資訊,不應被視為對購買、出售或交易任何加密資產的推薦、招攬或邀請。加密資產具有高波動性,存在價值損失風險。WEEX服務、產品及相關活動的可用性可能因地區而異。用戶在參與前有責任確保符合當地適用法律法規。
猜你喜歡

WEEX API 指南:從 API Key 到首筆簽名訂單

WEEX API 整合指南:身份驗證、限制與 403 陷阱

如何呼叫加密貨幣交易所 API 且不被封鎖

加密貨幣交易所 API:權限、簽名與速率限制

API 交易軟體:先檢查交易所限制

WEEX 跟單交易 API:端點、限制與 5 個錯誤代碼

加密貨幣交易所 API:功能解析與 API Key 權限指南

WEEX API 指南:設定、呼叫、權限與安全

什麼是 WEEX 股票現貨交易?使用 USDT 進行美股交易的新手指南

「牛來」(Niu Lai)Meme幣剛創下1.2億美元新高:為何這輪上漲持續數週而非數日

SpaceX股價守在141美元附近:為何1000億美元太空港計畫未能推動股價?

特朗普稱讚美光後,MU股價下跌:究竟發生了什麼

「我的女友景甜」數日後:這枚病毒式迷因幣發生了什麼

XST幣價數小時內從新低反彈19%:這是底部還是雜訊?

NVDA 創紀錄的第二季財報出爐後,股價是否被高估?

NVDA 財報後回檔:下一站仍是 250 美元嗎?

WEEX優惠碼與註冊獎勵:你需要了解的內容










