Solusi untuk mengirim pesan permintaan HTTP dari administrator

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

img

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:img

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 

Host: www.baidu.comJika kita tidak bisa melihat apa yang kita lakukan, kita tidak bisa melihat apa yang kita lakukan, kita tidak bisa melihat apa yang kita lakukan.Host: www.okex.comAnda dapat melihat link di dalam surat permintaan:/api/swap/v3/instruments/BTC-USD-SWAP/tickerUntuk mendapatkan data pasar kontrak permanen di tempat BTC.

POST meminta laporan:

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"}

Anda dapat melihat bahwa jalur permintaan adalah:/api/swap/v3/orderSaya tidak tahu. Kunci akses yang divalidasi:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4(Demonstrasi, bukan KEY) Tanda tangan untuk permintaan ini:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=API KEY Kunci Rahasia Passphraseabc123(Demonstrasi) Data tubuh yang diminta:{"aaa":"111","bbb":"222"}

Dengan cara ini, Anda dapat melihat pesan permintaan dan menganalisis mengapa permintaan antarmuka mengalami kesalahan.

2. Permintaan pemantauan lokal

Cara kedua, tanpa harus membuat robot, menggunakan Apple Computer Mac Selfie.Netcat : https://baike.baidu.com/item/Netcat/9952751?fr=aladdin◦ Mendengarkan permintaan, dan mencetak surat kabar.

Di terminal, gunakan perintahnc -l 8080Untuk itu, saya ingin berbagi dengan Anda tentang apa yang saya lakukan di sini.

Gambar di bawah:img

Demikian pula kita mengimplementasikan host di komputer lokal, dan kemudian di alat debugging, menggunakan kode berikut untuk mengirim permintaan.

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

Setelah itu, Anda dapat mengirim pesan POST yang tercetak di terminal Anda:img

Pernyataan permintaan GET yang dicetak di terminal:img


Berkaitan

Lebih banyak