संसाधन लोड हो रहा है... लोड करना...

डॉकर एचटीटीपी अनुरोध संदेश प्राप्त करने के लिए समाधान

लेखक:निनाबादास, बनाया गयाः 2022-04-27 10:55:50, अद्यतनः 2022-04-27 10:57:37

डॉकर एचटीटीपी अनुरोध संदेश प्राप्त करने के लिए समाधान

रणनीति कोड का परीक्षण और डिबगिंग करते समय, या वास्तविक बाजार में बॉट चलाने पर, प्लेटफ़ॉर्म इंटरफ़ेस अक्सर त्रुटियों के साथ रिपोर्ट किया जाता है। इस समय, आपको प्लेटफ़ॉर्म इंटरफ़ेस एपीआई प्रलेखन से क्वेरी करने की आवश्यकता है, प्रासंगिक त्रुटि रिपोर्टिंग जानकारी की खोज करें, और हमेशा त्रुटियों के अनुरोध संदेश प्रदान करने की आवश्यकता है, जब प्लेटफ़ॉर्म एपीआई तकनीकी सेवा से क्वेरी करते हैं, तो त्रुटियों के कारणों का विश्लेषण करने के लिए।

यदि आप संदेश की जानकारी नहीं देख सकते हैं, तो समस्याओं को ढूंढना मुश्किल होगा। इस लेख में, हम दो समाधानों पर चर्चा करेंगे।

1. भेजे गए अनुरोध संदेश को प्रिंट करने के लिए पायथन स्कैपी (पैकेट कैप्चर) का उपयोग करें

सबसे पहले, स्थापित करें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()
}

पैकेट कैप्चर के बॉट द्वारा मुद्रित जानकारीःimg

हम अनुरोध संदेशों की प्रतिलिपि बना सकते हैं और एक नज़र डाल सकते हैंः 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"}.

इस प्रकार, हम अनुरोध संदेशों का निरीक्षण कर सकते हैं, और इंटरफ़ेस द्वारा आने वाली त्रुटियों के कारणों का विश्लेषण कर सकते हैं।

2. स्थानीय श्रोता का अनुरोध

दूसरा समाधान, एक बॉट बनाने के बिना, उपयोग करना हैNetcatजो मैक सिस्टम के साथ आता हैःhttps://baike.baidu.com/item/Netcat/9952751?fr=aladdinअनुरोधों को सुनें और संदेश प्रिंट करें।

टर्मिनल में, कमांड का उपयोग करेंnc -l 8080नेटकैट चलाने के लिए।

जैसा कि चित्र में दिखाया गया हैःimg

इसी तरह, हम इस मशीन पर एक डॉकर तैनात करते हैं, और फिर डिबगिंग टूल में, एक अनुरोध भेजने के लिए निम्न कोड का उपयोग करें।

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 अनुरोध संदेशःimg

टर्मिनल पर मुद्रित GET अनुरोध संदेशःimg


अधिक