Solution pour obtenir le message de demande Docker Http

Auteur:Je suis désolée., Créé: 2022-04-27 10:55:50, Mis à jour: 2022-04-27 10:57:37

Solution pour obtenir le message de demande Docker Http

Lors du test et du débogage du code de stratégie, ou de l'exécution du bot sur un marché réel, l'interface de la plate-forme est souvent signalée avec des erreurs. À ce moment-là, vous devez interroger la documentation de l'API de l'interface de la plate-forme, rechercher les informations de rapport d'erreur pertinentes et toujours fournir les messages de demande d'erreurs, lors de la requête du service technique de l'API de la plate-forme, pour analyser les causes des erreurs.

Si vous ne pouvez pas voir les informations du message, il sera difficile de trouver les problèmes.

1. Utilisez Python Scapy (capture de paquets) pour imprimer le message de demande envoyé

Tout d'abord, installezscapy.

pip3 install scapy 

Ensuite, créez une stratégie 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")

Ensuite, créez un bot qui utilise la stratégie, et le bot va capturer les paquets http envoyés par le serveur docker (https ne peut pas attraper les paquets, et nous avons un certain traitement pour cela).

Exécutez le bot de capture de paquets, et ensuite vous pouvez utiliser l'outil de débogage pour envoyer des requêtes pour laisser le bot capturer des paquets.

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

Les informations imprimées par le bot de capture de paquets:Solutions to Obtaining Docker Http Request Message

Nous pouvons copier les messages de demande et jeter un coup d'œil: Message de demande 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 
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:

Le dépôt /api/swap/v3/ordre HTTP/1.1 L'hôte est www.baidu.com L'agent utilisateur: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/35.0.1916.153 Safari/537.36 Le contenu: 25 Type de contenu: application/json; jeu de caractères=UTF-8 OK-Accès-Clé: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 Ok-Access-Passphrase: abc123 Il est temps de passer à autre chose Si vous avez un problème avec le système, vous pouvez le résoudre en cliquant sur le bouton de commande. Ok-Access-Timestamp: 2020-09-23T08:43:49.906Z Accepter le codage: gzip

Je ne sais pas.

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.

fonction principale exchange.SetBase ((http://127.0.0.1:8080) // ici nous modifions l'adresse de base au local, le port 8080, et puis Netcat peut écouter les demandes // demande de POST L'échange.IO ((api, POST, /api/swap/v3/order, aaa=111&bbb=222)

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

} “`

Le message de demande POST imprimé sur le terminal:Solutions to Obtaining Docker Http Request Message

Le message de demande GET imprimé sur le terminal:Solutions to Obtaining Docker Http Request Message


En savoir plus