Bei Tests, Debugging-Policies und beim Betrieb von Roboter auf dem Festplatten wird häufig ein Fehler bei der Anschlussmeldung des Austauschs aufgetreten. Es ist wichtig, die API-Dokumentation des Austauschs zu durchsuchen, um entsprechende Fehlerinformationen zu erhalten.
In diesem Artikel werden wir zwei Lösungen gemeinsam erörtern.
Erst installierenscapy
Module
pip3 install scapy
Dann erstellen Sie eine Python-Strategie:
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")
Dann wird ein Bot erstellt, der diese Strategie verwendet, und er greift das HTTP-Paket, das vom Server des Hosts ausgegeben wird (https kann das nicht greifen und hat etwas damit zu tun).
Wenn wir diesen Bot ausführen, können wir mit dem Debugging-Tool eine Anfrage versenden, und der Roboter greift die Anfrage.
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()
}
Die Botschaft, die der Roboter ausgedruckt hat:
Wir können es kopieren und den Artikel lesen: GET fordert einen Bericht:
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
Wenn wir uns nicht an die richtigen Dinge erinnern, die wir tun, um sie zu fangen, können wir sie ignorieren, und das Richtige sollte sein:Host: www.okex.com
Der Link in der Anfrage lautet:/api/swap/v3/instruments/BTC-USD-SWAP/ticker
Die Anfrage, die die Banken anfordern, ist, um die Marktdaten für dauerhafte Verträge mit BTC zu erhalten.
POST fordert einen Bericht:
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"}
Sie können sehen, dass der Request-Pfad lautet:/api/swap/v3/order
Das ist nicht wahr.
Der geprüfte Zugangsschlüssel:d487230f-ccccc-aaaaa-bbbbb-268fef99cfe4
(Demonstration, nicht echtes KEY)
Unterzeichnen Sie die Anfrage:h1x6f80rhhkELobJcO1rFyMgUUshOlmgjRBHD+pLvG0=
API KEY Passphrase:abc123
(Demonstration verwendet)
Die angeforderten Body-Daten:{"aaa":"111","bbb":"222"}
。
Das ist ein einfaches Verfahren, um die Anfragen zu analysieren und zu analysieren, warum eine Anfrage einen Fehler erlebt hat.
Die zweite Methode, ohne Roboter zu bauen, ist die Verwendung von Apple-Computern mit einem Mac-Stick.Netcat
: https://baike.baidu.com/item/Netcat/9952751?fr=aladdinUnd sie haben sich auch für die Veröffentlichung von Berichten eingesetzt.
Befehle für den Endgerätnc -l 8080
Das ist eine sehr schwierige Aufgabe.
Siehe Bild:
Ebenso können wir einen Host auf dem Computer installieren und dann im Debugging-Tool eine Anfrage mit folgendem Code senden.
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()
}
Die Post-Request-Nachricht, die auf dem Terminal gedruckt wurde:
Der get-Anfrage-Message, der auf dem Terminal gedruckt wurde: