
اسٹریٹیجی کوڈز کی جانچ اور ڈیبگنگ کرتے وقت، آپ کو ایکسچینج انٹرفیس کی طرف سے اطلاع دی گئی غلطیوں کا سامنا کرنا پڑتا ہے، اس وقت آپ کو ایکسچینج 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 پیکٹوں کو پکڑ لے گا
اس پیکٹ کیپچر روبوٹ کو چلائیں، اور پھر آپ روبوٹ کو پیکٹ کیپچر کرنے کی درخواستیں بھیجنے کے لیے ڈیبگنگ ٹول استعمال کر سکتے ہیں۔ ڈیبگر میں ہم درخواست بھیجنے کے لیے کوڈ لکھتے ہیں۔
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
/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
/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=
API کلیدی پاسفریز:abc123 (مظاہرے کے لیے)
باڈی ڈیٹا کی درخواست کریں:{"aaa":"111","bbb":"222"}。
اس طرح، آپ درخواست کے پیغام کا مشاہدہ کر سکتے ہیں اور اس وجہ کا تجزیہ کر سکتے ہیں کہ انٹرفیس کی درخواست میں خرابی کا سامنا کیوں ہوا۔
دوسرا طریقہ روبوٹ کی تخلیق کی ضرورت نہیں ہےNetcat : https://baike.baidu.com/item/Netcat/9952751?fr=aladdin ۔ درخواستوں کی نگرانی کریں اور پیغامات پرنٹ کریں۔
ٹرمینل میں، کمانڈ استعمال کریں۔nc -l 8080، Netcat چلائیں۔
جیسا کہ شکل میں دکھایا گیا ہے:

اسی طرح، ہم مقامی مشین پر ایک میزبان تعینات کرتے ہیں، اور پھر ڈیبگنگ ٹول میں درخواست بھیجنے کے لیے درج ذیل کوڈ کا استعمال کرتے ہیں۔
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()
}
ٹرمینل پر چھپی ہوئی POST درخواست کا پیغام:

ٹرمینل پر پرنٹ شدہ GET درخواست کا پیغام:
