Geben Sie das bin-Verzeichnis ein und führen Sie den folgenden Befehl in der Befehlszeile aus (um cli.exe herunterzuladen, gehen Sie zu meinem anderen Artikel: https://learnku.com/articles/67419)
. / cli . exe Websocket . php
1. Erstellen Sie eine Websocket-Verbindung im Browser (fügen Sie zuerst die Datei Websocket.js in den Browser ein).
2. Registrieren Sie die js-Funktion, die im Client-Objekt aufgerufen werden muss
# 假设我们需要通过http调用btoa这个函数,第一个参数随便命名,第二个参数是函数执行的内容,需要自己定义执行内容
let client = ( new WebsocketClient ( "ws://127.0.0.1:9501" ) ) . start ( ) ;
client . registeCall ( "btoa" , function ( resolve , params ) {
let result = btoa ( params ) ;
resolve ( result ) ;
} ) ;
# 会输出一个访问地址,比如这样
[ 2022 / 4 / 24 18 : 16 : 01 ] [ info ] 连接到服务器成功
[ 2022 / 4 / 24 18 : 16 : 52 ] [ info ] 注册函数btoa成功
[ 2022 / 4 / 24 18 : 16 : 52 ] [ info ] 访问地址:http: //127.0.0.1:9501/call?group=ef8d3da2-dca4-4236-ba99-82f76a5e1901&action=btoa&input=
# 参数说明
group:客户端分组ID (不用管)
action:注册的需要调用的函数(不用管)
input:调用这个函数传入的参数(需要输入)
http://127.0.0.1:9501/call?group=df777a58-ff44-41bb-81ce-935b6bea9c25&action=btoa&input="abc"
ist: Das Ergebnis der Ausführung von window.btoa("ss")
Oftmals werden verschlüsselte Parameter von einer Funktion in einer bestimmten js-Datei generiert. Wir müssen den Ort finden, an dem die verschlüsselten Parameter über Haltepunkte generiert werden, und dann unser Skript dynamisch einfügen und es mit externem Code aufrufen Der Schlüsselcode wurde bereits gefunden, Sie müssen also nur unser Skript dynamisch einfügen, was in zwei Schritten erfolgt.
Wir müssen die Schlüsselverschlüsselungsfunktion zur Verbindungslogik mit ws hinzufügen, sie als neue js-Datei speichern und dann die verschlüsselte js-Datei mithilfe der Überschreibung oder des Fiddlers ersetzen, wenn wir die Verschlüsselungsfunktion finden
function sign(){
// w函数存在其他地方
return w(x+y);
}
Nach der Transformation
function sign() {
// 动态注入js文件
(function () {
var newElement = document.createElement("script");
newElement.setAttribute("type", "text/javascript");
newElement.setAttribute("src", "https://github.com/kxg3030/js-rpc/blob/main/Websocket.js");
document.body.appendChild(newElement);
function startWs() {
var client = (new WebsocketClient("ws://127.0.0.1:9501")).start();
client.registeCall("a", function (resolve, params) {
// 重点!在这里我们主动调用w函数并传入参数
resolve(w(params));
})
}
setTimeout(startWs, 1000)
})();
// w函数存在其他地方
return w(x + y);
}
Speichern Sie dann die geänderte JS-Datei und ersetzen Sie die ursprüngliche JS-Datei mit demselben Namen auf der Webseite
Verwenden Sie einfach einen externen WS-Server, um mit dem Browser zu kommunizieren
/ call 调用函数获取返回值
/ list 获取当前服务的websocket客户端数量