Al probar y depurar el código de estrategia, o ejecutar el bot en un mercado real, la interfaz de la plataforma a menudo se informa con errores. En este momento, debe consultar la documentación de la API de la interfaz de la plataforma, buscar la información de informes de errores relevante y siempre debe proporcionar los mensajes de solicitud de errores, al consultar el servicio técnico de la API de la plataforma, para analizar las causas de los errores.
Si no puede ver la información del mensaje, será difícil encontrar los problemas.
Primero, instalescapy
.
pip3 install scapy
Luego, crea una estrategia de 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")
Luego crear un bot que utiliza la estrategia, y el bot capturará los paquetes http enviados por el servidor docker (https no puede captar los paquetes, y tenemos un poco de procesamiento para eso).
Ejecutar el bot de captura de paquetes, y luego se puede utilizar la herramienta de depuración para enviar solicitudes para que el bot de captura de paquetes.
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()
}
La información impresa por el bot de captura de paquetes:
Podemos copiar los mensajes de solicitud y echar un vistazo: Mensaje de solicitud 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:
Posibilidad de transferencia /api/swap/v3/orden HTTP/1.1 Anfitrión: www.baidu.com Agente de usuario: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/35.0.1916.153 Safari/537.36 Contenido-Llevo: 25 Tipo de contenido: aplicación/json; conjunto de caracteres=UTF-8 Ok-Access-Key: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 Ahora tienes que irte. Ok-Acceso-Palabra de acceso: abc123 - Sí, sí, sí. - ¿Qué es eso? ¿Qué es eso? Ok-Access-Timestamp: 2020-09-23T08:43:49.906Z Aceptar el código: gzip
¿Por qué no lo haces?
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.
Función principal
exchange.SetBase ((
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
} “`
El mensaje de solicitud POST impreso en la terminal:
El mensaje de solicitud GET impreso en el terminal: