Cuando se prueba, desactiva el código de la política o se ejecuta un robot en el disco real, a menudo se encuentran informes de errores de la interfaz del intercambio, cuando se consulta la documentación de la API de la interfaz del intercambio, se consulta la información de los errores relacionados, y cuando se consulta al servicio técnico de la API del intercambio, siempre se requiere un mensaje de solicitud de error para analizar la causa del error.
En este artículo, vamos a analizar dos soluciones para solucionar el problema de no ver la información en los periódicos.
Primero instalarscapy
El módulo
pip3 install scapy
Y luego crear 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 se crea un robot que usa esta política y que se encarga de capturar el paquete http enviado por el servidor de su host.
Si se ejecuta este bot de captura de paquetes, se puede enviar una solicitud con la herramienta de depuración y el bot captura el paquete. En la herramienta de depuración se escribe el código para enviar la solicitud.
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()
}
El mensaje que imprimió el robot:
En la página de Facebook del blog, el blog de la organización, el blog de los activistas, el blog de los activistas y el blog de los activistas, se puede leer: El mensaje solicitado por 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.com
¿Qué es lo que podemos hacer para atrapar el paquete, que podemos ignorar, y lo que debería ser correcto?Host: www.okex.com
En la petición se puede ver el enlace a:/api/swap/v3/instruments/BTC-USD-SWAP/ticker
En la página web de la empresa, el usuario puede consultar los datos del mercado de contratos permanentes de BTC.
POST pide un mensaje:
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"}
Se puede ver que el camino de la solicitud es:/api/swap/v3/order
¿Qué es esto?
La clave de acceso verificada es:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
(Demonstrativo, no el verdadero KEY)
La firma de la petición:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
La clave clave de API KEY es el siguiente:abc123
(Demonstrado)
Los datos del cuerpo solicitados:{"aaa":"111","bbb":"222"}
。
Esto permite observar el mensaje de la solicitud y analizar las razones por las que la solicitud de interfaz se encuentra con un error.
El segundo método, sin necesidad de crear un robot, es usar un Mac portátil de Apple.Netcat
: https://baike.baidu.com/item/Netcat/9952751?fr=aladdinTambién se puede escuchar la petición y imprimir el periódico.
En el terminal, el uso de órdenesnc -l 8080
En la actualidad, el sitio web de la compañía es el más popular en todo el mundo.
La imagen es la siguiente:
De la misma manera, implementamos un host en el equipo local, y luego en la herramienta de depuración, utilizamos el siguiente código para enviar las solicitudes.
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()
}
El mensaje de solicitud de POST impreso en el terminal:
El mensaje de solicitud de GET impreso en el terminal: