Les ressources ont été chargées... Je charge...

Solution pour obtenir des messages d'envoi de requêtes HTTP par l'administrateur

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2020-09-23 16:24:42, Mis à jour: 2023-09-27 19:37:55

img

Solution pour obtenir des messages d'envoi de requêtes HTTP par l'administrateur

Il est fréquent de rencontrer des rapports d'erreur d'interface d'échange lors du test, du débogage du code de stratégie, de l'exécution de robots sur le disque réel. Pour consulter la documentation de l'API de l'interface d'échange et les informations d'erreur pertinentes, le service client technique de l'API de l'échange doit toujours fournir un message de demande d'erreur pour analyser la cause de l'erreur.

Dans cet article, nous examinerons deux solutions possibles pour résoudre ce problème.

1, les paquets de récupération de la bibliothèque Scapy en Python sont utilisés pour imprimer le message de demande envoyé

Tout d'abord,scapyModule

pip3 install scapy 

Nous avons créé 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")

On crée ensuite un robot qui utilise cette stratégie et qui récupère le paquet http envoyé par le serveur de l'hôte auquel il appartient.

Si vous lancez ce robot de capture de paquets, vous pouvez envoyer une requête à l'aide de l'outil de débogage, et le robot va saisir le paquet.

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

Les messages imprimés par le robot:img

Nous pouvons le copier et le lire: Le message demandé par 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.comIl y a des choses que nous pouvons ignorer, et qui devraient être correctes, pour que nous puissions les saisir.Host: www.okex.comLe lien suivant figure dans la pétition:/api/swap/v3/instruments/BTC-USD-SWAP/tickerLe site officiel de la banque est le site officiel de la banque centrale de Hong Kong, qui a été créé pour demander des données sur le marché des contrats de perpétuité sur BTC.

POST demande un article:

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

Vous pouvez voir le chemin de la requête:/api/swap/v3/orderJe ne sais pas. La clé d'accès vérifiée:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4(Démonstration, pas le vrai KEY) La signature de la requête:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=La clé de l'API KEY est la clé secrète Passphraseabc123(Démonstration utilisée) Les données du corps demandées:{"aaa":"111","bbb":"222"}

Cela permet d'observer le message de la requête et d'analyser les raisons pour lesquelles la requête d'interface rencontre des erreurs.

2° Les demandes d'écoute locale

La deuxième méthode, qui n'a pas besoin de créer un robot, est d'utiliser le Mac de l'Apple.Netcat : https://baike.baidu.com/item/Netcat/9952751?fr=aladdinDans le même temps, les médias locaux ont également diffusé des informations sur la situation.

Dans le terminal, utiliser les commandesnc -l 8080Il y a aussi une autre version de Netcat.

Voici le graphique:img

De la même manière, nous déployons un hôte sur le serveur, puis nous envoyons une requête dans l'outil de débogage en utilisant le code suivant.

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

Le message de demande POST imprimé sur le terminal:img

Le message de demande GET imprimé sur le terminal:img


Relationnée

Plus de