O recurso está a ser carregado... Carregamento...

Solução para receber mensagens de solicitação de http enviadas por administradores

Autora:Inventor quantificado - sonho pequeno, Criado: 2020-09-23 16:24:42, Atualizado: 2023-09-27 19:37:55

img

Solução para receber mensagens de solicitação de http enviadas por administradores

Quando testar, depurar o código da política, quando executar um robô em disco real, muitas vezes há situações em que se encontram relatórios de erros na interface do exchange, quando se consulta a documentação do API da interface do exchange, para obter informações de erros relevantes, quando se consulta o serviço técnico do API do exchange, sempre é necessário fornecer um relatório de pedido de erro para analisar a causa do erro.

O que é que se passa quando não se vê um jornal e não há como procurar soluções, neste artigo vamos discutir duas soluções.

1, Imprimir mensagens de solicitação enviadas usando o pacote de scapy do Python

Primeiro, instalarscapyMódulo

pip3 install scapy 

E então, criar uma estratégia 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")

Em seguida, criar um robô que usa essa política, que irá pegar o pacote http enviado pelo servidor do host (https não consegue pegar e tem algum tratamento para isso).

A partir daí, o bot pode enviar um pedido usando a ferramenta de depuração, e o robô faz o depuração.

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

A mensagem foi impressa por um robô:img

O blogueiro, que é um dos fundadores do blog, escreveu: O GET solicitou a reportagem:

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.comA questão é que, se o que estamos fazendo é para capturar o pacote, podemos ignorá-lo, o que deve ser correto é:Host: www.okex.comO link para a petição pode ser visto em:/api/swap/v3/instruments/BTC-USD-SWAP/tickerO site oficial da empresa é o site oficial da empresa, e é para solicitar dados do mercado de contratos permanentes da BTC.

POST solicita reportagem:

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

O caminho da solicitação pode ser visto como:/api/swap/v3/orderNão, não. A chave de acesso verificada é:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4(Demonstração, não real) Assinado por:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=API KEY Passphrase chave secretaabc123(Demonstração) Os dados do corpo solicitados:{"aaa":"111","bbb":"222"}

Isso permite que você observe a mensagem do pedido e analise as razões pelas quais o pedido de interface está sofrendo um erro.

2o, solicitações de escuta local

O segundo método, sem a necessidade de criar robôs, é usar um Mac portátil da Apple.Netcat : https://baike.baidu.com/item/Netcat/9952751?fr=aladdinO blogueiro também escreveu sobre o assunto:

No terminal, use o comandonc -l 8080O que é o que você está fazendo?

A imagem é a seguinte:img

Da mesma forma, nós implementamos um host no computador e, em seguida, no Debug Tool, usamos o seguinte código para enviar solicitações.

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

A mensagem de solicitação de POST impressa no terminal:img

O texto do pedido de GET impresso no terminal:img


Relacionados

Mais.