Sumber daya yang dimuat... Pemuatan...

Solusi untuk mengirim pesan permintaan HTTP dari administrator

Penulis:Penemu Kuantitas - Mimpi Kecil, Dibuat: 2020-09-23 16:24:42, Diperbarui: 2023-09-27 19:37:55

获取托管者发送http请求报文的解决方案

Solusi untuk mengirim pesan permintaan HTTP dari administrator

Dalam pengujian, debugging kode kebijakan, saat menjalankan robot secara real time, sering terjadi laporan kesalahan antarmuka pertukaran, saat ini untuk menelusuri dokumen API antarmuka pertukaran, untuk menelusuri informasi laporan terkait, ketika berkonsultasi dengan layanan pelanggan teknis API pertukaran, selalu perlu memberikan laporan permintaan laporan kesalahan, untuk menganalisis penyebab laporan kesalahan.

Pada saat ini, tidak ada yang bisa dilakukan untuk mencari masalah jika tidak melihat berita, dan dalam artikel ini kita akan membahas dua solusi.

1. Menggunakan JavaScript untuk mencetak pesan permintaan yang dikirim

Pertama, instalscapyModul

pip3 install scapy 

Dan kemudian membuat 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 membuat bot yang menggunakan kebijakan ini, yang akan mengambil paket http yang dikeluarkan oleh server hostnya (https tidak dapat mengambilnya, ada beberapa penanganan untuk ini).

Kemudian kita bisa menjalankan bot ini, dan kemudian kita bisa menggunakan alat debugging untuk mengirim permintaan, sehingga robot tersebut dapat menangkap paket tersebut.

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()
}

Di sini, saya menemukan beberapa informasi yang menarik dari robot yang mencetak:获取托管者发送http请求报文的解决方案

Kita bisa menyalin dan membaca artikel ini: Berita yang diminta 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 Host: www.baidu.com User-Agent: 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 isi: 25 Content-Type: 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 Terima-Enkoding: gzip

{Y: i: i: i: i: i: i}

可以看到请求路径为:```/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 main (() { exchange.SetBase ((http://127.0.0.1:8080) // Ini mengubah alamat basis ke komputer asli, port 8080, Netcat dapat memantau permintaan // POST Permintaan exchange.IO ((api,POST,/api/swap/v3/order,aaa=111&bbb=222)

// GET 请求
exchange.SetContractType("swap")
exchange.GetTicker()

} “`

Setelah itu, Anda dapat mengirim pesan POST yang tercetak di terminal Anda:获取托管者发送http请求报文的解决方案

Pernyataan permintaan GET yang dicetak di terminal:获取托管者发送http请求报文的解决方案


Artikel terkait

Informasi lebih lanjut