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