Docker Http درخواست پیغام حاصل کرنے کے لئے حل

مصنف:نینا باداس, تخلیق: 2022-04-27 10:55:50, تازہ کاری: 2022-04-27 10:57:37

Docker Http درخواست پیغام حاصل کرنے کے لئے حل

حکمت عملی کوڈ کی جانچ اور ڈیبگنگ کرتے وقت ، یا حقیقی مارکیٹ میں بوٹ چلانے پر ، پلیٹ فارم انٹرفیس کو اکثر غلطیوں کے ساتھ رپورٹ کیا جاتا ہے۔ اس وقت ، آپ کو پلیٹ فارم انٹرفیس API دستاویزات سے استفسار کرنے کی ضرورت ہے ، متعلقہ غلطی کی اطلاع دہندگی کی معلومات کی تلاش کریں ، اور ہمیشہ غلطیوں کی درخواست کے پیغامات فراہم کرنے کی ضرورت ہے ، جب پلیٹ فارم API تکنیکی خدمت سے استفسار کریں ، غلطیوں کی وجوہات کا تجزیہ کریں۔

اگر آپ پیغام کی معلومات نہیں دیکھ سکتے ہیں تو ، مسائل کو تلاش کرنا مشکل ہوگا۔ اس مضمون میں ، ہم دو حلوں پر تبادلہ خیال کریں گے۔

1. درخواست پیغام بھیجا پرنٹ کرنے کے لئے پیتھون Scapy (پیکٹ کی گرفتاری) کا استعمال کریں

سب سے پہلے، نصب کریں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()
}

پیکٹ کی گرفتاری کے بوٹ کی طرف سے چھپی ہوئی معلومات:img

ہم درخواست کے پیغامات کو کاپی کر سکتے ہیں اور ایک نظر ڈالیں: 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نیٹ کیٹ چلانے کے لئے.

جیسا کہ تصویر میں دکھایا گیا ہے:img

اسی طرح، ہم اس مشین پر ایک ڈوکر تعینات کرتے ہیں، اور پھر ڈیبگنگ کے آلے میں، مندرجہ ذیل کوڈ کا استعمال کرتے ہوئے ایک درخواست بھیجنے کے لئے.

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 درخواست پیغام ٹرمینل پر طباعت:img

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


مزید