ٹیسٹنگ ، ڈیبگنگ پالیسی کوڈ ، اصلی ڈسک پر روبوٹ چلانے کے دوران اکثر تبادلے کے انٹرفیس کی خرابی کی اطلاع ملتی ہے ، اس وقت تبادلے کے انٹرفیس API دستاویزات سے پوچھ گچھ کرنے کے لئے ، متعلقہ خرابی کی اطلاع کی معلومات حاصل کرنے کے لئے ، تبادلے کے API تکنیکی کسٹمر سروس سے مشورہ کرنے کے لئے ہمیشہ خرابی کی اطلاع کی درخواست کی اطلاع فراہم کرنے کی ضرورت ہوتی ہے ، جس سے خرابی کی وجہ کا تجزیہ کیا جاسکتا ہے۔
اس وقت جب ہم اخبارات نہیں دیکھ سکتے ہیں تو ہمیں کوئی مسئلہ نہیں ہے۔ اس مضمون میں ہم دو حلوں پر تبادلہ خیال کرتے ہیں۔
سب سے پہلے نصب کریں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(){
// 要把基地址设置为其它http协议的地址,如果不设置交易所的地址一般都是https,这样是抓不到包的
exchange.SetBase("http://www.baidu.com")
// POST 请求
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET 请求
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
/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
(ڈیمو کے لئے، حقیقی KEY نہیں)
اس درخواست پر دستخط:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
API KEY پاس ورڈ کی چابی Passphrase: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") // 这里把基地址改为本机,端口8080,Netcat 就可以监听到请求了
// POST 请求
exchange.IO("api", "POST", "/api/swap/v3/order", "aaa=111&bbb=222")
// GET 请求
exchange.SetContractType("swap")
exchange.GetTicker()
}
ٹرمینل پر پرنٹ شدہ پوسٹ کی درخواست کا پیغام:
اس ٹرمینل پر پرنٹ شدہ جی ای ٹی کی درخواست کا پیغام: