FMZ量化交易获取托管者发送http请求报文的解决方案
admin
2023-07-31 23:45:08
0

目前不清退的交易所推荐:

1、全球第二大交易所OKX欧意

国区邀请链接: https://www.myts3cards.com/cn/join/1837888   币种多,交易量大!

国际邀请链接:https://www.okx.com/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!

2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183

全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031  币安注册不了IP地址用香港,居住地选香港,认证照旧,邮箱推荐如gmail、outlook。支持币种多,交易安全!

买好币上KuCoin:https://www.kucoin.com/r/af/1f7w3  CoinMarketCap前五的交易所,注册友好操简单快捷!

FMZ量化交易平台邀请链接:https://www.fmz.com/

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

在测试、调试策略代码时、实盘运行机器人时经常有遇到交易所接口报错的情况,此时去查询交易所接口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(){
    // 要把基地址设置为其它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()
}

抓包机器人打印的信息:
15e0230ad4bc6a00e60115e0230ad4bc6a00e601

我们可以复制出来看一下报文:
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.okek.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
验证的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。

如图:
16ea458dfeb3d64ea2e916ea458dfeb3d64ea2e9

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

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请求报文:
16cff5e26a659c67d01e16ea458dfeb3d64ea2e9

终端上打印出来的GET请求报文:
15c800212b6673dd350c16ea458dfeb3d64ea2e9

FMZ量化交易平台邀请链接:https://www.fmz.com/

全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031  币安注册不了IP地址用香港,居住地选香港,认证照旧,邮箱推荐如gmail、outlook。支持币种多,交易安全!

买好币上KuCoin:https://www.kucoin.com/r/af/1f7w3  CoinMarketCap前五的交易所,注册友好操简单快捷!

目前不清退的交易所推荐:

1、全球第二大交易所OKX欧意,邀请链接:https://www.myts3cards.com/cn/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!。

2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183

买好币上币库:https://www.kucoin.com/r/1f7w3

火必所有用户现在可用了,但是要重新注册账号火币:https://www.huobi.com

全球最大交易所币安,

国区邀请链接:https://accounts.suitechsui.mobi/zh-CN/register?ref=16003031 支持86手机号码,网页直接注册。

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
在 iCloud 上关闭“查找... 如果您是 Apple 的长期用户,您肯定会遇到过 Find My 应用程序,它本机安装在 iPhon...
iPhone 屏幕上有亮绿色斑... iPhone 是市场上最稳定的智能手机之一,这主要归功于专为它们设计的 iOS 操作系统。然而,他们...
balenaEtcher烧录后... balenaEtcher烧录后u盘或者内存卡无法识别不能使用的解决方法想要恢复原来的方法,使用win...
farols1.1.501.0... faro ls 1.1.501.0(64bit)可以卸载,是一款无需连接外部PC机或笔记本计算机即可...