Решения для получения сообщения Docker Http Request

Автор:Нинабадасс., Создано: 2022-04-27 10:55:50, Обновлено: 2022-04-27 10:57:37

Решения для получения сообщения Docker Http Request

При тестировании и отлаживании кода стратегии или запуске бота на реальном рынке интерфейс платформы часто сообщается с ошибками. В это время вам нужно запросить документацию API интерфейса платформы, найти соответствующую информацию о сообщении об ошибках и всегда предоставлять запросы сообщений об ошибках, при запросе технической службы API платформы, чтобы проанализировать причины ошибок.

Если вы не можете увидеть информацию сообщения, будет трудно найти проблемы.

1. Используйте Python Scapy (захват пакетов) для печати отправленного запроса

Во-первых, установитьscapy.

pip3 install scapy 

Затем, создайте стратегию 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")

Затем создайте бота, который использует эту стратегию, и бот будет захватывать пакеты http, отправленные сервером докера (https не может поймать пакеты, и у нас есть некоторая обработка для этого).

Запустите бота по захвату пакетов, и затем вы можете использовать инструмент отладки для отправки запросов, чтобы бот мог захватить пакеты.

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

Информация, напечатанная ботом захвата пакетов:Solutions to Obtaining Docker Http Request Message

Мы можем скопировать запросы и посмотреть: Сообщение запроса 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:

ПОСТ /api/swap/v3/order /api/swap/v3/order /api/swap/v3/order /api/swap/v3/order /swap/swap/v3/order /swap/swap/v3/order /api/swap/v3/order /swap/swap/v3/order /swap/swap/swap/v3/order /swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap/swap HTTP/1.1 Ведущий: www.baidu.com Пользовательский агент: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/35.0.1916.153 Safari/537.36 Длина содержания: 25 Тип содержимого: application/json; charset=UTF-8 Окей, ключ доступа: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 Ok-Access-Passphrase: abc123 ОК-доступный сигнал: h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0= Ok-Access-Timestamp: 2020-09-23T08:43:49.906Z Принимать кодирование: gzip

Я не знаю, что делать.

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.

Функция основной exchange.SetBase(http://127.0.0.1:8080) // здесь мы изменяем адрес базы на локальный, порт 8080, и затем Netcat может слушать запросы // Запрос POST exchange.IO ((api, POST, /api/swap/v3/order, aaa=111&bbb=222)

// GET request 
exchange.SetContractType("swap")
exchange.GetTicker()

} “`

Сообщение запроса POST на терминале:Solutions to Obtaining Docker Http Request Message

Сообщение запроса GET, напечатанное на терминале:Solutions to Obtaining Docker Http Request Message


Больше информации