Sekiro RPC框架部署使用--web(油猴脚本)

发布时间 2023-06-12 17:37:43作者: 阿布_alone

点击 进入JsRpc 项目地址

一,下载地址

下载地址(https://oss.iinti.cn/sekiro/sekiro-demo)

二,运行(依赖java环境,自行安装)

# win 运行
    bin/sekiro.bat
# linux 运行
    bin/sekiro.sh

三,编写油猴脚本

(1) 编写好油猴脚本框架

// ==UserScript==
// @name         Sekiro
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://www.nhc.gov.cn/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=nhc.gov.cn
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
})();

 (2)创建script标签引入Sekiro-Client.js(也可以直接复制这段js源码写入到油猴中)

    /**
     * 创建script标签引入js,省去复制源码的步骤
     */
    var newElement = document.createElement("script"); // 创建标签
    newElement.setAttribute("type", "text/javascript"); // 设置属性
    newElement.setAttribute("src", "https://sekiro.virjar.com/sekiro-doc/assets/sekiro_web_client.js"); // 设置引入js的路径
    document.body.appendChild(newElement);
    
    

(3)访问https://sekiro.virjar.com/sekiro-doc/assets/sekkiro_js_demo.html,复制该页面的js代码,并追加到油猴脚本的自执行函数中,注意更改ip和端口(servcer默认端口为5612

    var client = new SekiroClient("wss://sekiro.virjar.com/business/register?group=ws-group&clientId="+guid());

替换成

    var client = new SekiroClient("ws://127.0.0.1:5620/business-demo/register?group=ws-group&clientId=" + guid());

(4)注册事件

    // 注册事件
    client.registerAction("executeJs", function (request, resolve, reject) {
        /**
         * resolve()函数处理成功
         * reject()函数处理失败或异常
         */
        var code = request["code"]; // 接收传递的参数
        if (!code) {
            reject("need param{code}");
            return;
        }
        console.log(`executeJs:${code}`);
        try {
            var result = document.cookie; // 获取页面cookie
            resolve(result); // 将cookie传递出去
        } catch (e) {
            reject(`error:${e}`); // 异常处理
        }
    })

完整代码如下:

// ==UserScript==
// @name         sekrio
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://www.nhc.gov.cn/*
// @grant        none
// ==/UserScript==

(function () {
    /**
     * 创建script标签引入js,省去复制源码的步骤
     */
    var newElement = document.createElement("script"); // 创建标签
    newElement.setAttribute("type", "text/javascript"); // 设置属性
    newElement.setAttribute("src", "https://sekiro.virjar.com/sekiro-doc/assets/sekiro_web_client.js"); // 设置引入js的路径
    document.body.appendChild(newElement);
    
    
    function guid() { // 该函数不用改
        function S4() {
            return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
        }
        return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
    }

    function start_sekiro() {
        // 根据ip和port进行配置,创建client
        var client = new SekiroClient("ws://127.0.0.1:5620/business-demo/register?group=ws-group&clientId=" + guid());
        // 注册分组
        client.registerAction("clientTime", function (request, resolve, reject) {
            resolve("" + new Date());
        });
        // 注册分组
        client.registerAction("executeJs", function (request, resolve, reject) {
            /**
             * resolve()函数处理成功
             * reject()函数处理失败或异常
             */
            var code = request["code"]; // 接收传递的参数
            if (!code) {
                reject("need param{code}");
                return;
            }
            console.log(`executeJs:${code}`);
            try {
                var result = document.cookie; // 获取页面cookie
                resolve(result); // 将cookie传递出去
            } catch (e) {
                reject(`error:${e}`); // 异常处理
            }
        })
    }
    setTimeout(start_sekiro, 2000) // 等待20s加载Sekiro客户端
    /**
     * python 连接 示例代码
     * 
    import requests
    params ={
        "group":"ws-group",#接口名称
        "action":"executeJs",#注册的服务名
        "code": "document.cookie", # 传递的参数
    }
    res = requests.get("http://127.0.0.1:5620/business-demo/invoke", params=params)
    print(res.text)

     */

})();

四, 在浏览器 刷新 目标网站页面,让油猴脚本生效

五, python访问

import requests
params ={
    "group":"ws-group",#接口名称
    "action":"executeJs",#注册的服务名
    "code": "document.cookie", # 传递的参数
}
res = requests.get("http://127.0.0.1:5620/business-demo/invoke", params=params)
print(res.text)

原文:https://blog.csdn.net/qq_43557600/article/details/128837697