Penyelesaian untuk Mendapatkan Docker Http Permintaan Mesej

Penulis:Ninabadass, Dicipta: 2022-04-27 10:55:50, Dikemas kini: 2022-04-27 10:57:37

Penyelesaian untuk Mendapatkan Docker Http Permintaan Mesej

Apabila menguji dan menyahpasang kod strategi, atau menjalankan bot di pasaran sebenar, antara muka platform sering dilaporkan dengan kesilapan. Pada masa ini, anda perlu menyoal dokumentasi API antara muka platform, mencari maklumat pelaporan ralat yang berkaitan, dan selalu perlu memberikan mesej permintaan kesilapan, ketika menyoal perkhidmatan teknikal API platform, untuk menganalisis penyebab ralat.

Jika anda tidak dapat melihat maklumat mesej, ia akan menjadi sukar untuk mencari masalah.

1. Gunakan Python Scapy (pengambilan pakej) untuk mencetak mesej permintaan yang dihantar

Pertama, pasangscapy.

pip3 install scapy 

Kemudian, buat 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 strategi, dan bot akan menangkap pakej http yang dihantar oleh pelayan docker (https tidak dapat menangkap pakej, dan kami mempunyai beberapa pemprosesan untuk itu).

Jalankan bot menangkap pakej, dan kemudian anda boleh menggunakan alat debugging untuk menghantar permintaan untuk membiarkan bot menangkap pakej.

function main(){
    // The base address should be set to the address of other http protocols. If the address of a platform is not set, it is generally https, so the packet 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()
}

Maklumat yang dicetak oleh bot menangkap pakej:Solutions to Obtaining Docker Http Request Message

Kita boleh menyalin mesej permintaan dan melihat: GET permintaan mesej:

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 
You can see the link in the request message is: ```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```, which is to request the crypto-margined (BTC) perpetual contract market data.

POST request message:

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.

You can see the request path is: ```/api/swap/v3/order```.
Verified Access key: ```d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4``` (for demo, not real KEY)
Signature of this request: ```h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=```
API KEY Passphrase: ```abc123``` (for demo)
Requested Body data: ```{"aaa":"111","bbb":"222"}```.

Thus, we can observe the request messages, and analyze the causes of errors encountered by the interface. 

### 2. Local Listener Request 

The second solution, without creating a bot, is to use the ```Netcat``` that comes with the Mac system: https://baike.baidu.com/item/Netcat/9952751?fr=aladdin. Listen to requests and print messages.

In the terminal, use the command ```nc -l 8080``` to run Netcat.

As is shown in the picture:
![Solutions to Obtaining Docker Http Request Message](/upload/asset/16ea458dfeb3d64ea2e9.png) 

Similarly, we deploy a docker on this machine, and then in the debugging tool, use the following code to send a request.

fungsi utama exchange.SetBase(http://127.0.0.1:8080) // di sini kita mengubah suai alamat pangkalan ke tempatan, port 8080, dan kemudian Netcat boleh mendengar permintaan // Permintaan POST pertukaran.IO ((api, POST, /api/swap/v3/order, aaa=111&bbb=222)

// GET request 
exchange.SetContractType("swap")
exchange.GetTicker()

} “`

Mesej permintaan POST dicetak pada terminal:Solutions to Obtaining Docker Http Request Message

Mesej permintaan GET dicetak pada terminal:Solutions to Obtaining Docker Http Request Message


Lebih lanjut