戦略コードをテスト・デバッグしたり,ロボットを実際のボットで実行したりすると,交換インターフェイスはエラーを報告することが多い.この時点で,関連するエラー情報をクエリするために交換インターフェイス API ドキュメントに移動します.交換 API 技術顧客サービスに問い合わせるとき,エラーが報告されたとき,エラーの原因を分析するために常に要求メッセージを提供する必要があります.
この記事では,2つの解決策を一緒に検討します.
まず 装置を設置しますscapy
モジュール
pip3 install scapy
Pythonの戦略を設定します
from scapy.all import *
def Method_print(packet):
ret = "\n".join(packet.sprintf("{Raw:%Raw.load%}").split(r"\r\n"))
Log(ret)
sniff(
iface='eth0',
prn=Method_print,
lfilter=lambda p: "GET" in str(p) or "POST" in str(p),
filter="tcp")
この戦略を利用するロボットを作成し,そのロボットは,そのドッカープロバイダのサーバーから送られた http パケットをキャッチします (httpsがキャッチできないのは,解決法があります).
パケットキャッチロボットを起動して デバッグツールを使って ロボットにパケットをキャッチさせるリクエストを送ることができます. デバッグツールではリクエストを送信するコードを書きます.
function main(){
// The base address should be set as the address of other http protocols. If the exchange address is not set, it is generally https. In this case, packets cannot be captured
exchange.SetBase("http://www.baidu.com")
// POST request
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
}
パッケージ捕獲ロボットによって印刷された情報:
メッセージが表示されます. GET要求メッセージ:
GET
/api/swap/v3/instruments/BTC-USD-SWAP/ticker
HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 Accept-Encoding: gzip
Host: www.baidu.com
パケットを捕まえるために変更したものです. 無視することができます. 正確なものはHost: www.okex.com
要求メッセージのリンクは:/api/swap/v3/instruments/BTC-USD-SWAP/ticker
BTCネイティブの永続契約市場データを要求する.
POST 要求メッセージ:
POST
/api/swap/v3/order
HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Content-Length: 25
Content-Type: application/json; charset=UTF-8
Ok-Access-Key: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
Ok-Access-Passphrase: abc123
Ok-Access-Sign: h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
Ok-Access-Timestamp: 2020-09-23T08:43:49.906Z Accept-Encoding: gzip
{"aaa":"111","bbb":"222"}
要求経路は次のとおりです./api/swap/v3/order
わかった
確認されたアクセスキー:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
(実際のKEYではなく,デモのみ)
申請の署名:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
API KEY 秘密鍵 パスフレーズabc123
(デモのみ)
要求される機関データ:{"aaa":"111","bbb":"222"}
。
インターフェースの要求がエラーになる理由を分析できます インターフェースの要求がエラーになる理由を分析します
ロボットを作る必要がありません.Netcat
マックに付属するhttps://baike.baidu.com/item/Netcat/9952751?fr=aladdin要求を監視し メッセージを印刷する
ターミナルで,命令でNetcatを実行nc - l 8080
.
下の写真のように:
同じようにコンピュータにドッカーを設置して 次のコードを使って デバッグツールでリクエストを送ります
function main(){
exchange.SetBase("http://127.0.0.1:8080") // Here, we change the base address to the local machine, port 8080, and Netcat can get the request
// POST request
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
}
端末に印刷されたPOST要求メッセージ:
端末に印刷された GET リクエストメッセージ: