حکمت عملی کوڈ کی جانچ اور ڈیبگنگ کرتے وقت ، یا روبوٹ کو حقیقی بوٹ پر چلانے پر ، ایکسچینج انٹرفیس اکثر غلطیوں کی اطلاع دیتا ہے۔ اس وقت ، متعلقہ غلطی کی معلومات سے استفسار کرنے کے لئے ایکسچینج انٹرفیس 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(){
// 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
، یہ بی ٹی سی مقامی دائمی معاہدے کی مارکیٹ کے اعداد و شمار کی درخواست کرنا ہے.
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=
API KEY خفیہ کلید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 درخواست پیغام ٹرمینل پر پرنٹ: