avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Nhận giải pháp gửi tin nhắn yêu cầu http của máy chủ

Được tạo ra trong: 2020-09-23 16:24:42, cập nhật trên: 2023-09-27 19:37:55
comments   0
hits   1510

Nhận giải pháp gửi tin nhắn yêu cầu http của máy chủ

Nhận giải pháp gửi tin nhắn yêu cầu http của máy chủ

Khi kiểm tra và gỡ lỗi mã chiến lược hoặc chạy robot trong giao dịch thực tế, bạn thường gặp phải lỗi do giao diện sàn giao dịch báo cáo. Lúc này, bạn cần truy vấn tài liệu API giao diện sàn giao dịch và thông tin lỗi liên quan. Khi tham khảo dịch vụ khách hàng kỹ thuật API sàn giao dịch , bạn luôn cần cung cấp tin nhắn Yêu cầu khi có lỗi được báo cáo, dùng để phân tích nguyên nhân gây ra lỗi.

Lúc này, nếu bạn không thể nhìn thấy thông tin tin nhắn, bạn sẽ không biết bắt đầu tìm vấn đề từ đâu. Trong bài viết này, chúng tôi sẽ thảo luận về hai giải pháp.

1. Sử dụng thư viện scapy của Python để nắm bắt gói tin và in ra tin nhắn yêu cầu đã gửi

Cài đặt đầu tiênscapyCác mô-đun

pip3 install scapy 

Sau đó tạo chính sách 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 chiến lược này. Robot sẽ bắt các gói http được gửi bởi máy chủ của máy chủ. (Có một số giải pháp cho lỗi không bắt được các gói https.)

Chạy robot bắt gói tin này, sau đó bạn có thể sử dụng công cụ gỡ lỗi để gửi yêu cầu cho robot bắt gói tin. Trong trình gỡ lỗi, chúng ta viết mã để gửi yêu cầu.

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 ra bởi robot bắt gói tin: Nhận giải pháp gửi tin nhắn yêu cầu http của máy chủ

Chúng ta có thể sao chép nó và xem xét thông báo: NHẬN tin nhắn yêu cầu:

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Đây là để chúng tôi nắm bắt được sự thay đổi của gói, bạn có thể bỏ qua nó, gói đúng sẽ làHost: www.okex.com Bạn có thể thấy liên kết trong tin nhắn yêu cầu là:/api/swap/v3/instruments/BTC-USD-SWAP/ticker, là yêu cầu dữ liệu thị trường hợp đồng vĩnh viễn dựa trên BTC.

Tin nhắn yêu cầu 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"}

Bạn có thể thấy đường dẫn yêu cầu là:/api/swap/v3/order。 Khóa truy cập để xác minh:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 (Chỉ dùng để trình diễn, không phải là KHÓA thật) Chữ ký của yêu cầu này:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0= Mật khẩu khóa API:abc123 (Để minh họa) Yêu cầu dữ liệu cơ thể:{"aaa":"111","bbb":"222"}

Theo cách này, bạn có thể quan sát thông báo yêu cầu và phân tích lý do tại sao yêu cầu giao diện gặp lỗi.

2. Yêu cầu giám sát cục bộ

Phương pháp thứ hai không yêu cầu tạo ra một robot. Sử dụng tích hợpNetcat : https://baike.baidu.com/item/Netcat/9952751?fr=aladdin . Theo dõi yêu cầu và in tin nhắn.

Trong terminal, sử dụng lệnhnc -l 8080, chạy Netcat.

Như thể hiện trong hình: Nhận giải pháp gửi tin nhắn yêu cầu http của máy chủ

Tương tự như vậy, chúng tôi triển khai máy chủ trên máy cục bộ, sau đó sử dụng đoạn mã sau để gửi yêu cầu trong công cụ gỡ lỗi.

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

Tin nhắn yêu cầu POST được in trên thiết bị đầu cuối: Nhận giải pháp gửi tin nhắn yêu cầu http của máy chủ

Tin nhắn yêu cầu GET được in trên thiết bị đầu cuối: Nhận giải pháp gửi tin nhắn yêu cầu http của máy chủ