কৌশল কোড পরীক্ষা এবং ডিবাগ করার সময়, বা একটি বাস্তব বাজারে বট চালানোর সময়, প্ল্যাটফর্ম ইন্টারফেস প্রায়ই ত্রুটিগুলির সাথে রিপোর্ট করা হয়। এই সময়ে, আপনাকে প্ল্যাটফর্ম ইন্টারফেস এপিআই ডকুমেন্টেশন অনুসন্ধান করতে হবে, প্রাসঙ্গিক ত্রুটি প্রতিবেদন তথ্য অনুসন্ধান করতে হবে এবং সর্বদা ত্রুটির অনুরোধ বার্তা সরবরাহ করতে হবে, যখন প্ল্যাটফর্ম এপিআই প্রযুক্তিগত পরিষেবা অনুসন্ধান করার সময়, ত্রুটির কারণ বিশ্লেষণ করতে।
যদি আপনি বার্তার তথ্য দেখতে না পারেন, তাহলে সমস্যাগুলি খুঁজে পাওয়া কঠিন হবে। এই নিবন্ধে, আমরা দুটি সমাধান নিয়ে আলোচনা করব।
প্রথমে ইনস্টল করুন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 ব্যবহারকারী-এজেন্টঃ Mozilla/5.0 (ম্যাকিনটোশ; ইন্টেল ম্যাক ওএস এক্স 10_9_3) AppleWebKit/537.36 (কেএইচটিএমএল, গেকোর মতো) Chrome/35.0.1916.153 Safari/537.36 বিষয়বস্তু-দৈর্ঘ্যঃ ২৫ বিষয়বস্তু-টাইপঃ অ্যাপ্লিকেশন/json; charset=UTF-8 OK-Access-Key: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 Ok-Access-Passphrase: abc123 ঠিক আছে, অ্যাক্সেস সাইনঃ h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0= Ok-Access-Timestamp: 2020-09-23T08:43:49.906Z Accept-Encoding: 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 অনুরোধ বার্তাঃ