حکمت عملی کوڈ کی جانچ اور ڈیبگنگ کرتے وقت ، یا حقیقی مارکیٹ میں بوٹ چلانے پر ، پلیٹ فارم انٹرفیس کو اکثر غلطیوں کے ساتھ رپورٹ کیا جاتا ہے۔ اس وقت ، آپ کو پلیٹ فارم انٹرفیس 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
You can see the link in the request message is: ```/api/swap/v3/instruments/BTC-USD-SWAP/ticker```, which is to request the crypto-margined (BTC) perpetual contract market data.
POST request message:
پوسٹ /api/swap/v3/order HTTP/1.1 میزبان: www.baidu.com صارف ایجنٹ: موزیلا/5.0 (میکنٹوش؛ انٹیل میک OS X 10_9_3) ایپل ویب کٹ / 537.36 (KHTML ، جیسے گیکو) کروم / 35.0.1916.153 سفاری / 537.36 مواد کی لمبائی: 25 مواد کی قسم: درخواست/json؛ Charset=UTF-8 ٹھیک ہے رسائی کلید: d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4 اوکے رسائی کا پاس ورڈ: abc123 ٹھیک ہے رسائی کا نشان: h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0= اوکے رسائی ٹائم اسٹیمپ: 2020-09-23T08:43:49.906Z قبول انکوڈنگ: gzip
{
You can see the request path is: ```/api/swap/v3/order```.
Verified Access key: ```d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4``` (for demo, not real KEY)
Signature of this request: ```h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=```
API KEY Passphrase: ```abc123``` (for demo)
Requested Body data: ```{"aaa":"111","bbb":"222"}```.
Thus, we can observe the request messages, and analyze the causes of errors encountered by the interface.
### 2. Local Listener Request
The second solution, without creating a bot, is to use the ```Netcat``` that comes with the Mac system: https://baike.baidu.com/item/Netcat/9952751?fr=aladdin. Listen to requests and print messages.
In the terminal, use the command ```nc -l 8080``` to run Netcat.
As is shown in the picture:
![Solutions to Obtaining Docker Http Request Message](/upload/asset/16ea458dfeb3d64ea2e9.png)
Similarly, we deploy a docker on this machine, and then in the debugging tool, use the following code to send a request.
اہم فنکشن
exchange.SetBase(
// GET request
exchange.SetContractType("swap")
exchange.GetTicker()
} “`
POST درخواست پیغام ٹرمینل پر طباعت:
ٹرمینل پر پرنٹ GET درخواست پیغام: