Type/to search
8
Follow
1369
Followers
Dapatkan penyelesaian menghantar mesej permintaan http oleh hos
Discussions
Created 2020-09-23 16:24:42  Updated 2023-09-27 19:37:55
 0
 1862

img

Dapatkan penyelesaian menghantar mesej permintaan http oleh hos

Semasa menguji dan menyahpepijat kod strategi, atau menjalankan robot dalam perdagangan sebenar, anda sering menghadapi ralat yang dilaporkan oleh antara muka pertukaran Pada masa ini, anda perlu menanyakan dokumentasi API antara muka pertukaran dan maklumat ralat yang berkaitan Apabila merujuk kepada perkhidmatan pelanggan teknikal pertukaran , anda sentiasa perlu memberikan mesej Permintaan apabila ralat dilaporkan, digunakan untuk menganalisis punca ralat.

Pada masa ini, jika anda tidak dapat melihat maklumat mesej, anda tidak akan tahu di mana hendak mula mencari masalah Dalam artikel ini, kami akan membincangkan dua penyelesaian.

1. Gunakan perpustakaan scapy Python untuk menangkap paket dan mencetak mesej permintaan yang dihantar

Pasang pertamascapyModul

pip3 install scapy

Kemudian buat dasar 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 buat robot yang menggunakan strategi ini Robot akan menangkap paket http yang dihantar oleh pelayan hos (Terdapat beberapa penyelesaian untuk kegagalan menangkap paket https.)

Jalankan robot penangkapan paket ini, dan kemudian anda boleh menggunakan alat penyahpepijatan untuk menghantar permintaan untuk membenarkan robot menangkap paket. Dalam penyahpepijat kami 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() }

Maklumat yang dicetak oleh robot penangkapan paket:
img

Kita boleh menyalinnya dan melihat mesej:
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

Host: www.baidu.comIni adalah untuk kita menangkap pengubahsuaian pakej, anda boleh mengabaikannya, yang betul sepatutnyaHost: www.okex.com
Anda boleh melihat bahawa pautan dalam mesej permintaan ialah:/api/swap/v3/instruments/BTC-USD-SWAP/ticker, adalah untuk meminta data pasaran kontrak kekal berasaskan BTC.

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

Anda boleh melihat bahawa laluan permintaan ialah:/api/swap/v3/order
Kunci akses untuk pengesahan:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 (Untuk tujuan demonstrasi sahaja, bukan KUNCI sebenar)
Tandatangan permintaan ini:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
Frasa Laluan API KEY:abc123 (Untuk demonstrasi)
Permintaan data Badan:{"aaa":"111","bbb":"222"}

Dengan cara ini, anda boleh melihat mesej permintaan dan menganalisis sebab permintaan antara muka mengalami ralat.

2. Permintaan pemantauan tempatan

Kaedah kedua tidak memerlukan penciptaan robot Gunakan terbina dalamNetcat : https://baike.baidu.com/item/Netcat/9952751?fr=aladdin . Pantau permintaan dan cetak mesej.

Di terminal, gunakan arahannc -l 8080, jalankan Netcat.

Seperti yang ditunjukkan dalam rajah:
img

Begitu juga, kami menggunakan hos pada mesin tempatan, dan kemudian menggunakan kod berikut untuk menghantar permintaan dalam alat nyahpepijat.

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

Mesej permintaan POST yang dicetak pada terminal:
img

Mesej permintaan GET yang dicetak pada terminal:
img

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)