Saat menguji dan men-debug kode strategi, atau menjalankan bot di pasar nyata, antarmuka platform sering dilaporkan dengan kesalahan. Pada saat ini, Anda perlu menanyakan dokumentasi API antarmuka platform, mencari informasi pelaporan kesalahan yang relevan, dan selalu perlu memberikan pesan permintaan kesalahan, ketika menanyakan layanan teknis API platform, untuk menganalisis penyebab kesalahan.
Jika Anda tidak dapat melihat informasi pesan, akan sulit untuk menemukan masalah.
Pertama, installscapy
.
pip3 install scapy
Kemudian, buatlah 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 buat bot yang menggunakan strategi, dan bot akan menangkap paket http yang dikirim oleh server docker (https tidak dapat menangkap paket, dan kami memiliki beberapa pemrosesan untuk itu).
Jalankan bot menangkap paket, dan kemudian Anda dapat menggunakan alat debugging untuk mengirim permintaan untuk membiarkan bot menangkap paket.
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()
}
Informasi yang dicetak oleh bot menangkap paket:
Kita bisa menyalin pesan permintaan dan melihat: Pesan permintaan 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.com
adalah apa yang kita telah dimodifikasi untuk menangkap paket, yang dapat diabaikan; yang benar harusHost: www.okex.com
Aku tidak tahu.
Anda dapat melihat link dalam pesan permintaan adalah:/api/swap/v3/instruments/BTC-USD-SWAP/ticker
, yang akan meminta data pasar kontrak perpetual crypto-margined (BTC).
POST pesan permintaan:
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 jalur permintaan adalah:/api/swap/v3/order
Aku tidak tahu.
Kunci akses yang diverifikasi:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
(untuk demo, bukan KEY nyata)
Tanda tangan permintaan ini:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
Kata sandi API KEY:abc123
(untuk demo)
Data Badan yang diminta:{"aaa":"111","bbb":"222"}
.
Dengan demikian, kita dapat mengamati pesan permintaan, dan menganalisis penyebab kesalahan yang dihadapi oleh antarmuka.
Solusi kedua, tanpa membuat bot, adalah menggunakanNetcat
yang datang dengan sistem Mac:https://baike.baidu.com/item/Netcat/9952751?fr=aladdinDengarkan permintaan dan cetak pesan.
Di terminal, gunakan perintahnc -l 8080
untuk menjalankan Netcat.
Seperti yang ditunjukkan pada gambar:
Demikian pula, kita menyebarkan docker pada mesin ini, dan kemudian di alat debugging, gunakan kode berikut untuk mengirim permintaan.
function main(){
exchange.SetBase("http://127.0.0.1:8080") // here we modify the base address to the local, port 8080, and then Netcat can listen to the requests
// POST request
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
}
POST pesan permintaan dicetak di terminal:
Pesan permintaan GET dicetak di terminal: