Dalam ujian, debugging kod dasar, semasa menjalankan bot pada cakera sebenar, sering terdapat laporan kesalahan antara muka bursa, ketika ini untuk mendapatkan dokumentasi API antara muka bursa, untuk mendapatkan maklumat pelaporan yang berkaitan, ketika menghubungi pelanggan teknikal API bursa, selalu perlu memberikan laporan permintaan ketika pelaporan, untuk menganalisis penyebab pelaporan.
Dalam artikel ini, kita akan membincangkan dua penyelesaian.
Mulakan dengan memasangscapy
Modul
pip3 install scapy
Kemudian, buatlah satu strategi 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")
Kemudian mencipta bot yang menggunakan dasar ini, yang akan merampas pakej http yang dikeluarkan oleh pelayan hostsnya (https tidak dapat merampas ini).
Apabila bot ini berjalan, anda boleh menggunakan alat debugging untuk menghantar permintaan, dan bot itu akan menangkapnya. Dalam alat debugging, anda menulis kod untuk menghantar permintaan.
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()
}
Berita yang dicetak oleh robot rampok:
Kita boleh menyalin dan lihat berita: Berita yang diminta oleh 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
可以看到请求报文中的链接为:```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```,是要请求BTC本位的永续合约行情数据。
POST请求报文:
POST /api/swap/v3/order HTTP/1.1 Tuan rumah: www.baidu.com Agen Pengguna: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/35.0.1916.153 Safari/537.36 Panjang Kandungan: 25 Jenis Kandungan: aplikasi/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 Menerima-Enkoding: gzip
{COLOR="#FFFFFF"}Satu yang sangat menarik.
可以看到请求路径为:```/api/swap/v3/order```。
验证的Access key : ```d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4``` (演示用,并非真KEY)
本次请求的签名:```h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=```
API KEY 秘钥Passphrase:```abc123``` (演示用)
请求的Body数据:```{"aaa":"111","bbb":"222"}```。
这样就可以观察请求报文了,分析接口请求遇到报错的原因。
### 2、本地监听请求
第二种方法,不需要创建机器人,使用苹果电脑Mac自带的```Netcat``` : https://baike.baidu.com/item/Netcat/9952751?fr=aladdin 。监听请求,并打印报文。
在终端,使用命令```nc -l 8080```,运行起来Netcat。
如图:
![获取托管者发送http请求报文的解决方案](/upload/asset/16ea458dfeb3d64ea2e9.png)
同样我们在本机部署一个托管者,然后在调试工具中,使用如下代码发送请求。
fungsi utama (() {
exchange.SetBase ((
// GET 请求
exchange.SetContractType("swap")
exchange.GetTicker()
} “`
POST permintaan mesej yang dicetak di terminal:
Mesej permintaan GET yang dicetak di terminal: