ich hoffe ihr könnt mir einen guten Tipp geben:
Ich will mir einen kleinen "Bot" bauen (einfahc nur ein Mischmasch an miteinander interagierenden Python Scripten)
der für mich Roulette spielt.
Dazu nutze ich Python+Selenium um die Webseite aufzurufen die ich will (halt den Roulettetisch im Onlinecasino).
Ich "injecte" auch einen javascript code, der http requests und responses abfängt, sieht alktuell so aus: (das mit dem schrieben in eine text datei schmeiß ich wieder raus, wiel klappt eh nicht)
Code: Alles auswählen
# Inject the JavaScript code to capture request and response data and save it to a growing text file
js_code = """
(function () {
var capturedData = [];
function saveDataToTxt(data) {
capturedData.push(data);
}
(function (xhr) {
var XHR = XMLHttpRequest.prototype;
var open = XHR.open;
var send = XHR.send;
var setRequestHeader = XHR.setRequestHeader;
XHR.open = function (method, url) {
this._method = method;
this._url = url;
this._requestHeaders = {};
this._startTime = (new Date()).toISOString();
return open.apply(this, arguments);
};
XHR.setRequestHeader = function (header, value) {
this._requestHeaders[header] = value;
return setRequestHeader.apply(this, arguments);
};
XHR.send = function (postData) {
var that = this;
this.addEventListener('load', function () {
var endTime = (new Date()).toISOString();
var myUrl = that._url ? that._url.toLowerCase() : that._url;
if (myUrl) {
var requestData = {
method: that._method,
url: myUrl,
headers: that._requestHeaders
};
var responseHeaders = that.getAllResponseHeaders();
var responseBody = that.response;
var responseData = {
url: myUrl,
statusCode: that.status,
responseHeaders: responseHeaders,
responseBody: responseBody
};
var capturedInfo = {
startTime: that._startTime,
endTime: endTime,
requestData: requestData,
responseData: responseData
};
saveDataToTxt(JSON.stringify(capturedInfo));
}
});
return send.apply(this, arguments);
};
})(XMLHttpRequest);
window.capturedData = capturedData;
window.saveDataToTxt = saveDataToTxt;
})();
"""
mein python/selenium code abe per se da mal noch keinen zugriff drauf hat.
Jetzt wäre die frage wie ich am besten diese 2-wege-kommunikation zwischen javascript und python/selenium hinkriege.
Weil im pürinzip will ich folgendes:
javacript code fängt eine neue request ab, liest ein paar daten raus.
und schickt ne message "nach oben" an den python code "Yo, neue request, hier sind die daten!"
python code macht dann alle möglichen sachen basierend auf den erhaltenen request daten, klicks und co.
und wartet dann wieder bis die nächste mesaage vom javascript coe kommt.
nicht undenkbar dass python auch mal was runter zum javascript code schicken will, brauche ich derzeit aber (noch) nicht.
Frage nur, wie kriegt mans hin?
Chatgpt sagt, der richtige weg wäre über websockets wozu man aber einen eigenen server und pipapo braucht.
die 0815 version wäre irgendwie mit weiterem injectedem javascript code, wo man einen eventlistener injected und irgendwie dessen return daten erhalten soll.
aber das schemißt mir die reihenfolge etwas über den haufen, weil eigentlich soll ja nicht mein python code dauernd nahcfragen müssen "Yo, neues event da" und der javascript code abtwortet.
sondern der JC code meldet sich von selbst wenn er was neues hat und mein python code fängt das ab und reagiert im prinzip nur auf die neu erhaltenen Daten.
Kann mir da Jemand ein gutes Grundgerüst sagen wie ich das quick and dirty umsetzen kann ohne große Vorkenntnisse?
