相关链接
点击 进入Sekiro框架官网
点击 进入JsRpc 项目地址
点击 进入Sekiro下载地址
点击 进入Sekiro-Client.js源码
一,下载地址
下载地址(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和端口
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)