रणनीति कोड का परीक्षण और डिबगिंग करते समय, या वास्तविक बाजार में बॉट चलाने पर, प्लेटफ़ॉर्म इंटरफ़ेस अक्सर त्रुटियों के साथ रिपोर्ट किया जाता है। इस समय, आपको प्लेटफ़ॉर्म इंटरफ़ेस एपीआई प्रलेखन से क्वेरी करने की आवश्यकता है, प्रासंगिक त्रुटि रिपोर्टिंग जानकारी की खोज करें, और हमेशा त्रुटियों के अनुरोध संदेश प्रदान करने की आवश्यकता है, जब प्लेटफ़ॉर्म एपीआई तकनीकी सेवा से क्वेरी करते हैं, तो त्रुटियों के कारणों का विश्लेषण करने के लिए।
यदि आप संदेश की जानकारी नहीं देख सकते हैं, तो समस्याओं को ढूंढना मुश्किल होगा। इस लेख में, हम दो समाधानों पर चर्चा करेंगे।
सबसे पहले, स्थापित करें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
Host: www.baidu.com
है कि हम पैकेट पकड़ने के लिए संशोधित किया है, जो अनदेखा किया जा सकता है; सही एक होना चाहिएHost: www.okex.com
..
आप अनुरोध संदेश में लिंक देख सकते हैंः/api/swap/v3/instruments/BTC-USD-SWAP/ticker
, जो क्रिप्टो-मार्जिन (बीटीसी) स्थायी अनुबंध बाजार के आंकड़ों का अनुरोध करना है।
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 modify the base address to the local, port 8080, and then Netcat can listen to the requests
// POST request
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
}
टर्मिनल पर मुद्रित POST अनुरोध संदेशः
टर्मिनल पर मुद्रित GET अनुरोध संदेशः