रणनीति कोड का परीक्षण और डिबगिंग करते समय, या वास्तविक बॉट पर रोबोट चलाते समय, एक्सचेंज इंटरफ़ेस अक्सर त्रुटियों की रिपोर्ट करता है। इस समय, संबंधित त्रुटि जानकारी की क्वेरी करने के लिए एक्सचेंज इंटरफ़ेस एपीआई दस्तावेज़ पर जाएं। एक्सचेंज एपीआई तकनीकी ग्राहक सेवा से परामर्श करते समय, आपको हमेशा त्रुटि के कारण का विश्लेषण करने के लिए त्रुटि की रिपोर्ट होने पर अनुरोध संदेश प्रदान करने की आवश्यकता होती है।
इस समय, संदेश जानकारी को देखे बिना समस्याओं को खोजने का कोई तरीका नहीं है। इस लेख में, हम दो समाधानों पर एक साथ चर्चा करेंगे।
सबसे पहले हम स्थापित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 as the address of other http protocols. If the exchange address is not set, it is generally https. In this case, packets 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
Host: www.baidu.com
है कि क्या हम पैकेट को पकड़ने में सक्षम होने के लिए बदल दिया है, आप इसे अनदेखा कर सकते हैं, सही एक होना चाहिएHost: www.okex.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
.
सत्यापित पहुँच कुंजीःd487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
(केवल प्रदर्शन के लिए, असली कुंजी नहीं)
अनुरोध पर हस्ताक्षरःh1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
एपीआई कुंजी गुप्त कुंजीabc123
(केवल प्रदर्शन के लिए)
अनुरोधित निकाय के आंकड़े:{"aaa":"111","bbb":"222"}
。
इस तरह, हम अनुरोध संदेश का निरीक्षण कर सकते हैं और विश्लेषण कर सकते हैं कि इंटरफ़ेस अनुरोध में त्रुटि क्यों होती है।
दूसरी पद्धति में रोबोट बनाने की आवश्यकता नहीं है, बसNetcat
कि मैक के साथ आता हैःhttps://baike.baidu.com/item/Netcat/9952751?fr=aladdinअनुरोधों की निगरानी करें और संदेश प्रिंट करें।
टर्मिनल पर, कमांड के साथ नेटकैट चलाएँnc - l 8080
.
जैसा कि नीचे चित्र में हैः
इसी तरह, हम अपने कंप्यूटर पर एक डॉकर तैनात करते हैं, और फिर निम्नलिखित कोड का उपयोग डिबगिंग टूल में अनुरोध भेजने के लिए करते हैं।
function main(){
exchange.SetBase("http://127.0.0.1:8080") // Here, we change the base address to the local machine, port 8080, and Netcat can get the request
// POST request
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
}
टर्मिनल पर मुद्रित POST अनुरोध संदेशः
टर्मिनल पर मुद्रित GET अनुरोध संदेशः