Tài nguyên đang được tải lên... tải...

Giải pháp để có được thư yêu cầu HTTP từ người quản lý

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2020-09-23 16:24:42, Cập nhật: 2023-09-27 19:37:55

获取托管者发送http请求报文的解决方案

Giải pháp để có được thư yêu cầu HTTP từ người quản lý

Trong quá trình thử nghiệm, điều chỉnh mã chính sách, khi chạy robot trên máy tính thực, thường gặp các trường hợp báo cáo lỗi giao diện giao dịch, khi đó truy vấn tài liệu API giao diện giao dịch, truy vấn thông tin báo cáo liên quan, khi tham khảo dịch vụ khách hàng kỹ thuật API giao dịch, luôn cần cung cấp báo cáo yêu cầu khi báo cáo lỗi, để phân tích nguyên nhân của báo cáo lỗi.

Khi không thấy tin tức, bạn không thể tìm ra vấn đề, và trong bài viết này, chúng tôi cùng nhau xem xét hai giải pháp.

1, Scapy scraper trong Python in báo cáo yêu cầu gửi

Đầu tiên là cài đặtscapyMô-đun

pip3 install scapy 

Sau đó tạo ra một chiến lược 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")

Sau đó, tạo một robot sử dụng chính sách này, và nó sẽ lấy các gói HTTP từ máy chủ của chủ nhà của nó (https không thể lấy được một số xử lý cho điều này).

Sau đó, bạn có thể sử dụng công cụ debugging để gửi yêu cầu và cho robot bắt gói.

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

Thông tin được in bằng robot bắt túi:获取托管者发送http请求报文的解决方案

Chúng ta có thể sao chép và xem bài báo: GET yêu cầu báo cáo:

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 
可以看到请求报文中的链接为:```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```,是要请求BTC本位的永续合约行情数据。

POST请求报文:

POST /api/swap/v3/order HTTP/1.1 Chủ nhà: www.baidu.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, giống như Gecko) Chrome/35.0.1916.153 Safari/537.36 Nội dung dài: 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 Chấp nhận mã hóa: gzip

{C:$0000FF}Tạm dịch:

可以看到请求路径为:```/api/swap/v3/order```。
验证的Access key : ```d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4``` (演示用,并非真KEY)
本次请求的签名:```h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=```
API KEY 秘钥Passphrase:```abc123``` (演示用)
请求的Body数据:```{"aaa":"111","bbb":"222"}```。

这样就可以观察请求报文了,分析接口请求遇到报错的原因。

### 2、本地监听请求

第二种方法,不需要创建机器人,使用苹果电脑Mac自带的```Netcat``` : https://baike.baidu.com/item/Netcat/9952751?fr=aladdin 。监听请求,并打印报文。

在终端,使用命令```nc -l 8080```,运行起来Netcat。

如图:
![获取托管者发送http请求报文的解决方案](/upload/asset/16ea458dfeb3d64ea2e9.png) 

同样我们在本机部署一个托管者,然后在调试工具中,使用如下代码发送请求。

function main (()) { exchange.SetBase ((http://127.0.0.1:8080) // Ở đây thay đổi địa chỉ cơ sở thành máy tính bản địa, cổng 8080, Netcat có thể nghe lén các yêu cầu // POST yêu cầu exchange.IO ((api,POST,/api/swap/v3/order,aaa=111&bbb=222)

// GET 请求
exchange.SetContractType("swap")
exchange.GetTicker()

} “`

Trong khi đó, một số người khác cũng đã bị ảnh hưởng bởi các thông tin trên.获取托管者发送http请求报文的解决方案

GET yêu cầu tin nhắn được in trên thiết bị đầu cuối:获取托管者发送http请求报文的解决方案


Nội dung liên quan

Nhiều hơn nữa