При тестировании, дешифровке кода политики, при работе на диске бота часто встречаются ситуации, когда сообщения об ошибках интерфейсов биржи, при этом для запроса документации об API интерфейсов биржи, для запроса соответствующей информации об ошибках, для консультации технического обслуживания API биржи всегда необходимо предоставить сообщение о запросе об ошибках, чтобы проанализировать причину ошибки.
В этой статье мы рассмотрим два решения, которые помогут решить проблему, если вы не можете найти информацию в газете.
Сначала установка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-пакеты, отправленные сервером хостера, к которому он принадлежит.
Запустите этот робот, и вы сможете отправить запрос с помощью инструмента для дешифровки, и робот схватит пакет. В инструменте для дешифровки мы запишем код для отправки запроса.
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()
}
Например, в одном из писем, опубликованном в Twitter, говорится:
Мы можем скопировать и просмотреть статью: В сообщении 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
Если мы хотим поймать пакеты, мы можем их игнорировать, а правильное должно быть:Host: www.okex.com
Ссылка на запрос в газете:/api/swap/v3/instruments/BTC-USD-SWAP/ticker
В частности, на сайте компании появилась информация о том, что на сайте компании появилась информация о продажах постоянных контрактов на BTC.
POST просит сообщить:
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"}
Посмотрите, как путь запроса выглядит:/api/swap/v3/order
Я не знаю.
Проверенный ключ:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
(Демонстрация, не KEY)
Подпись на запрос:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
API KEY парольный ключ Passphrase:abc123
(Демонстрация)
Запрошенные данные тела:{"aaa":"111","bbb":"222"}
。
Это позволяет наблюдать за сообщениями запросов и анализировать причины, по которым запросы на интерфейсе испытывают ошибки.
Во-вторых, не нужно создавать роботов, используя Apple Computer Mac Self-Caring.Netcat
: https://baike.baidu.com/item/Netcat/9952751?fr=aladdin≈ прослушивать просьбы и печатать новости.
Использование команды в терминалеnc -l 8080
Например, в сети Netcat.com.
Например:
Также мы развертываем хостера на базе компьютера, а затем отправляем запрос в инструменте дешифровки с помощью следующего кода.
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()
}
На этом терминале напечатана POST-запрос:
На терминале напечатан текст запроса GET: