Lösungen zur Erfassung der Docker-Http-Anfrage

Schriftsteller:- Ich bin ein Idiot., Erstellt: 2022-04-27 10:55:50, Aktualisiert: 2022-04-27 10:57:37

Lösungen zur Erfassung der Docker-Http-Anfrage

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.

1. Verwenden Sie Python Scapy (Packet Capture), um die gesendete Anforderungsnachricht zu drucken

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:Solutions to Obtaining Docker Http Request Message

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(http://127.0.0.1:8080) // hier ändern wir die Basisadresse auf den lokalen, Port 8080, und dann kann Netcat die Anfragen hören // POST-Anfrage Die Ausgabe von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Dienstleistungen in Form von Zinssätzen für die Erbringung von Dienstleistungen in Form von Dienstleistungen.

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

} “`

Die auf dem Terminal gedruckte POST-Anfrage:Solutions to Obtaining Docker Http Request Message

Die auf dem Terminal gedruckte GET-Anforderungsmeldung:Solutions to Obtaining Docker Http Request Message


Weitere Informationen