テスト,デュマイクポリシーコード,実装機でロボットを実行する際に取引所のインターフェースエラーが頻繁に発生する場合,取引所のインターフェースAPI文書を問い合わせ,関連するエラー情報を求め,取引所のAPI技術顧客に問い合わせるときは,エラーの原因を分析するために,エラーのリクエストを提示することが常に必要である.
この記事では,2つの解決策について説明します.
インストールするscapy
モジュール
pip3 install scapy
Pythonのプロットで,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(){
// 要把基地址设置为其它http协议的地址,如果不设置交易所的地址一般都是https,这样是抓不到包的
exchange.SetBase("http://www.baidu.com")
// POST 请求
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET 请求
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
(デモンストレーション)
要求されたBodyデータ:{"aaa":"111","bbb":"222"}
。
インターフェースの要求がエラーになる理由を分析します.
2つ目の方法は,ロボットを作る必要がなく,Netcat
: https://baike.baidu.com/item/Netcat/9952751?fr=aladdinメディアの報道は,メディアの報道が,メディアの報道が,メディアの報道である.
端末でコマンドを使用します.nc -l 8080
ネットワーク・キャッシング・ネットワーク・キャッシング・ネットワーク
フォトグラフ:
同じように,本機にホストを展開し,デュッキングツールで,次のコードを使用してリクエストを送信します.
function main(){
exchange.SetBase("http://127.0.0.1:8080") // 这里把基地址改为本机,端口8080,Netcat 就可以监听到请求了
// POST 请求
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET 请求
exchange.SetContractType("swap")
exchange.GetTicker()
}
端末にプリントされたPOST要求メッセージ:
端末にプリントされたGET要求メッセージ: