테스트, 디뷰팅 정책 코드, 실제 디스크 로봇을 실행할 때 거래소 인터페이스 오류 보고가 자주 발생하는 경우, 거래소 인터페이스 API 문서를 검색하여 관련 오류 정보를 검색하고, 거래소 API 기술 고객 서비스를 상담할 때 항상 오류 보고 요청 보고서를 제공해야하며, 오류 보고의 원인을 분석하는 데 사용됩니다.
이 시점에 뉴스 보도가 없는 것은 문제가 될 수 있는 시점입니다. 이 글에서는 두 가지 해결책을 함께 논의합니다.
먼저 설치scapy
모듈
pip3 install scapy
그리고 나서 파이썬 전략을 만들죠.
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()
}
포토바크를 잡는 로봇이 인쇄한 메시지:
우리는 이 기사를 복사해서 읽을 수 있습니다. 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
可以看到请求报文中的链接为:```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```,是要请求BTC本位的永续合约行情数据。
POST请求报文:
POST /api/swap/v3/order HTTP/1.1 호스트: www.baidu.com 사용자 에이전트: 모질라/5.0 (마킨토시; 인텔 Mac OS X 10_9_3) 애플 웹킷/537.36 (KHTML, 게코처럼) 크롬/35.0.1916.153 사파리/537.36 내용: 25 컨텐츠 타입: 응용 프로그램/json; 문자 집합=UTF-8 오케이 접근 키: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 OK-Access-Passphrase: abc123 오케이 접근 신호: h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0= OK-Access-Timestamp: 2020-09-23T08:43:49.906Z 수용-인코딩: gzip
可以看到请求路径为:```/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 ((
// GET 请求
exchange.SetContractType("swap")
exchange.GetTicker()
} “`
이 기기에서 인쇄된 POST 요청 메시지는 다음과 같습니다:
GET 요청 메시지는 기기에서 인쇄되었습니다.