在測試、除錯策略**時、實盤執行機械人時經常有遇到交易所介面報錯的情況,此時去查詢交易所介面api文件,查詢相關報錯資訊,諮詢交易所api技術客服時總是需要提供報錯時的請求報文,用來分析報錯原因。這個時候看不到報文資訊就無從下手找問題,本篇文章我們一起來**兩種解決方案。
1、使用python的scapy庫抓包列印出發送的請求報文
首先安裝scapy
模組
pip3 install scapy
然後建立乙個python策略:
from scapy.all import *
def method_print(packet):
ret = "\n".join(packet.sprintf("").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()
抓包機械人列印的資訊:
我們可以複製出來看一下報文:
get請求的報文:
host: www.baidu.com
是我們為了能抓到包改的,可以忽略,正確的應該是host: www.okex.com
post請求報文:
可以看到請求路徑為:/api/swap/v3/order
。
驗證的access key :d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
(演示用,並非真key)
本次請求的簽名:h1x6f80rhhkelobjco1rfymguusholmgjrbhd+plvg0=
api key 秘鑰passphrase:abc123
(演示用)
請求的body資料:。
這樣就可以觀察請求報文了,分析介面請求遇到報錯的原因。
2、本地監聽請求
第二種方法,不需要建立機械人,使用蘋果電腦mac自帶的netcat
: 。監聽請求,並列印報文。
在終端,使用命令nc -l 8080
,執行起來netcat。
如圖:
同樣我們在本機部署乙個託管者,然後在除錯工具中,使用如下**傳送請求。
function main()
終端上列印出來的post請求報文:
終端上列印出來的get請求報文:
HTTP請求報文
http請求報文解剖 http請求報文由3部分組成 請求行 請求頭 請求體 是請求方法,get和post是最常見的http方法,除此以外還包括delete head options put trace。不過,當前的大多數瀏覽器只支援get和post,spring 3.0提供了乙個hiddenhttp...
HTTP請求報文
在 http 連線中報文分為請求 request 和響應 response 兩種。每種報文在 http 首部都有不同的字段來標識不同的用途。get protocols rfc2616 rfc2616 sec5.html http 1.1 請求行 host www.w3.org connection ...
HTTP請求報文
http協議是hyper text transfer protocol 超文字傳輸協議 的縮寫,是用於從全球資訊網 www world wide web 伺服器傳輸超文字到本地瀏覽器的傳送協議。http是乙個基於tcp ip通訊協議來傳遞資料 html 檔案,檔案,查詢結果等 http報文可以分為兩...