Beim Testen und Debuggen des Strategiecodes oder beim Ausführen des Bots in einem realen Markt wird die Plattformoberfläche häufig mit Fehlern gemeldet. Zu diesem Zeitpunkt müssen Sie die Plattformoberflächen-API-Dokumentation abfragen, nach den relevanten Fehlerberichterstattungsinformationen suchen und immer die Anforderungsnachrichten von Fehlern bereitstellen, wenn Sie den technischen Dienst der Plattform-API abfragen, um die Ursachen der Fehler zu analysieren.
Wenn Sie die Nachrichteninformationen nicht sehen können, wird es schwierig sein, die Probleme zu finden.
Zuerst installierenscapy
.
pip3 install scapy
Dann erstellen Sie eine Python-Strategie:
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")
Dann erstellen Sie einen Bot, der die Strategie verwendet, und der Bot wird http-Pakete erfassen, die vom Docker-Server gesendet werden (https kann die Pakete nicht fangen, und wir haben einige Verarbeitung dafür).
Führen Sie den Paket-Capture-Bot aus, und dann können Sie das Debugging-Tool verwenden, um Anfragen zu senden, damit der Bot Pakete erfassen kann.
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()
}
Die Informationen, die der Bot von Packet Capture druckt:
Wir können die Nachrichten kopieren und einen Blick darauf werfen: GET-Anforderungsnachricht:
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:
Nachricht /api/swap/v3/order HTTP/1.1 Gastgeber: www.baidu.com Benutzer-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/35.0.1916.153 Safari/537.36 Inhaltslänge: 25 Inhaltstyp: Anwendung/json; Charset=UTF-8 OK-Zugriffsschlüssel: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 Ok-Zugriff-Passphrase: abc123 OK-Zugangssignal: h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0= Ok-Access-Zeitstempel: 2020-09-23T08:43:49.906Z Akzeptieren-Codierung: gzip
Ich habe dich nicht gesehen.
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.
Hauptfunktion
exchange.SetBase(
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
} “`
Die auf dem Terminal gedruckte POST-Anfrage:
Die auf dem Terminal gedruckte GET-Anforderungsmeldung: