戦略コードをテスト・デバッグしたり,ロボットを実際のボットで実行したりすると,交換インターフェイスはエラーを報告することが多い.この時点で,関連するエラー情報をクエリするために交換インターフェイス 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
We can see the link in the request message is: ```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```, it is to request the BTC native perpetual contract market data.
POST request message:
郵便局 /api/swap/v3/order について HTTP/1.1 主催者: www.baidu.com ユーザーエージェント: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML,ゲッコのように) Chrome/35.0.1916.153 Safari/537.36 内容長: 25 コンテンツタイプ:アプリケーション/json;文字セット=UTF-8 OK アクセスキー: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 OK アクセス パスフレーズ: abc123 OK アクセスサイン h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0= OK-Access-Timestamp: 2020-09-23T08:43:49.906Z 承認・エンコーディング: gzip
{cH00ffff}
We can see the request path is: ```/api/swap/v3/order```.
Verified Access Key: ```d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4``` (For demonstration only, not the real KEY)
Signature of the request: ```h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=```
API KEY secret key--Passphrase: ```abc123``` (For demonstration only)
Requested Body data: ```{"aaa":"111","bbb":"222"}```。
In this way, we can observe the request message and analyze the reason why the interface request encounters an error.
### 2. Local listening request
The second method does not need to create a robot, just uses the ```Netcat``` that comes with the Mac: https://baike.baidu.com/item/Netcat/9952751?fr=aladdin. Monitor the requests and print messages.
On the terminal, run Netcat with the command ```nc - l 8080```.
As the picture below:
![Solution to Get the http Request Message Sent by the Docker](/upload/asset/28d7f2156cdb996092a8a.png)
Similarly, we deploy a docker on our computer, and then use the following code to send requests in the debugging tool.
メイン機能
ここで,私たちはローカルマシン,ポート8080のベースアドレスを変更し,Netcatは要求を得ることができます
// POST リクエスト
交換.IO ((
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
{ \ pos (192,220) }
端末に印刷された GET リクエストメッセージ: