전략 코드를 테스트하고 디버깅하거나 실제 시장에서 봇을 실행할 때, 플랫폼 인터페이스는 종종 오류가 보고됩니다. 이 시점에서 플랫폼 인터페이스 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(){
// The base address should be set to the address of other http protocols. If the address of a platform is not set, it is generally https, so the packet cannot be captured.
exchange.SetBase("http://www.baidu.com")
// POST request
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET request
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
You can see the link in the request message is: ```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```, which is to request the crypto-margined (BTC) perpetual contract market data.
POST request message:
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
You can see the request path is: ```/api/swap/v3/order```.
Verified Access key: ```d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4``` (for demo, not real KEY)
Signature of this request: ```h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=```
API KEY Passphrase: ```abc123``` (for demo)
Requested Body data: ```{"aaa":"111","bbb":"222"}```.
Thus, we can observe the request messages, and analyze the causes of errors encountered by the interface.
### 2. Local Listener Request
The second solution, without creating a bot, is to use the ```Netcat``` that comes with the Mac system: https://baike.baidu.com/item/Netcat/9952751?fr=aladdin. Listen to requests and print messages.
In the terminal, use the command ```nc -l 8080``` to run Netcat.
As is shown in the picture:
![Solutions to Obtaining Docker Http Request Message](/upload/asset/16ea458dfeb3d64ea2e9.png)
Similarly, we deploy a docker on this machine, and then in the debugging tool, use the following code to send a request.
주요 함수
exchange.SetBase ((
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
} “`
POST 요청 메시지는 터미널에 인쇄:
터미널에 인쇄된 GET 요청 메시지는: