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