Solución para obtener mensajes de petición de HTTP de los administradores

El autor:Un sueño pequeño., Creado: 2020-09-23 16:24:42, Actualizado: 2023-09-27 19:37:55

img

Solución para obtener mensajes de petición de HTTP de los administradores

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.

1, Imprimir mensajes de petición enviados con el paquete de captura de la biblioteca de Python

Primero instalarscapyEl 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:img

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.comEn la petición se puede ver el enlace a:/api/swap/v3/instruments/BTC-USD-SWAP/tickerEn 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.

2. Solicitud de escucha local

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 8080En la actualidad, el sitio web de la compañía es el más popular en todo el mundo.

La imagen es la siguiente:img

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:img

El mensaje de solicitud de GET impreso en el terminal:img


Relacionados

Más.