点击 进入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)
标签:web,code,group,--,sekiro,S4,Sekiro,var,js From: https://www.cnblogs.com/tjp40922/p/17475674.html
原文:https://blog.csdn.net/qq_43557600/article/details/128837697