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

获取托管者发送http请求报文的解决方案

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:获取托管者发送http请求报文的解决方案

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 
可以看到请求报文中的链接为:```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```,是要请求BTC本位的永续合约行情数据。

POST请求报文:

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.

可以看到请求路径为:```/api/swap/v3/order```。
验证的Access key : ```d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4``` (演示用,并非真KEY)
本次请求的签名:```h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=```
API KEY 秘钥Passphrase:```abc123``` (演示用)
请求的Body数据:```{"aaa":"111","bbb":"222"}```。

这样就可以观察请求报文了,分析接口请求遇到报错的原因。

### 2、本地监听请求

第二种方法,不需要创建机器人,使用苹果电脑Mac自带的```Netcat``` : https://baike.baidu.com/item/Netcat/9952751?fr=aladdin 。监听请求,并打印报文。

在终端,使用命令```nc -l 8080```,运行起来Netcat。

如图:
![获取托管者发送http请求报文的解决方案](/upload/asset/16ea458dfeb3d64ea2e9.png) 

同样我们在本机部署一个托管者,然后在调试工具中,使用如下代码发送请求。

fonction main (() { Exchange.SetBase ((http://127.0.0.1:8080) // Ici, l'adresse de la base est changée en locale, le port 8080, Netcat peut écouter les demandes. // Requête POST L'échange.IO ((api, POST, /api/swap/v3/order, aaa=111&bbb=222) est une plateforme de trading basée sur le commerce électronique.

// GET 请求
exchange.SetContractType("swap")
exchange.GetTicker()

} “`

Le message de demande POST imprimé sur le terminal:获取托管者发送http请求报文的解决方案

Le message de demande GET imprimé sur le terminal:获取托管者发送http请求报文的解决方案


Contenu lié

En savoir plus