কৌশল কোড পরীক্ষা এবং ডিবাগ করার সময়, বা একটি বাস্তব বাজারে বট চালানোর সময়, প্ল্যাটফর্ম ইন্টারফেস প্রায়ই ত্রুটিগুলির সাথে রিপোর্ট করা হয়। এই সময়ে, আপনাকে প্ল্যাটফর্ম ইন্টারফেস এপিআই ডকুমেন্টেশন অনুসন্ধান করতে হবে, প্রাসঙ্গিক ত্রুটি প্রতিবেদন তথ্য অনুসন্ধান করতে হবে এবং সর্বদা ত্রুটির অনুরোধ বার্তা সরবরাহ করতে হবে, যখন প্ল্যাটফর্ম এপিআই প্রযুক্তিগত পরিষেবা অনুসন্ধান করার সময়, ত্রুটির কারণ বিশ্লেষণ করতে।
যদি আপনি বার্তার তথ্য দেখতে না পারেন, তাহলে সমস্যাগুলি খুঁজে পাওয়া কঠিন হবে। এই নিবন্ধে, আমরা দুটি সমাধান নিয়ে আলোচনা করব।
প্রথমে ইনস্টল করুন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 অনুরোধ বার্তাঃ