2021年1月13日
编写谷歌插件给指定页面注入js
注入js->js rpc
最近搞某个页面的js参数算法,直接去抠js太累。
想到了搭建 js rpc 的方式
为了使用渣渣的https://github.com/virjar/sekiro框架,搭建需要把sekiro_web_client.js
注入到指定页面
注入方法
检索到的方法有
1.Fiddler的AutoResponder
2.谷歌插件
3.油猴插件(同理谷歌插件)
选择谷歌插件,脚本最简单 只需要开启浏览器即可
谷歌插件编写
1.核心配置文件manifest.json
按照文档即可 主要是一些插件设置
{
// 会一直常驻的后台JS或后台页面
"background":{
// 2种指定方式,如果指定JS,那么会自动生成一个背景页
"page": "background.html"
//"scripts": ["js/background.js"]
},
"browser_action":{
"default_icon": "icon.png", // 图标悬停时的标题,可选
"default_popup": "popup.html",
"default_title": "JS注入工具"
},
"content_scripts":[{
// 多个JS按顺序注入
"js": ["jquery.min.js", "content_script.js"],
"matches": ["http://www.baidu.com/*", "https://www.baidu.com/*"],
// 代码注入的时间,可选值: "document_start", "document_end", or "document_idle",最后一个表示页面空闲时,默认document_idle
"run_at": "document_start",
"all_frames":true
}],
"description": "JS注入工具",
"icons":{
"16": "icon.png",
"48": "icon.png",
"128": "icon.png"
},
"manifest_version": 2,
"name": "awaycode专用插件",
"permissions":["<all_urls>","webRequest","webRequestBlocking","tabs", "http://*/*","https://*/*","contextMenus","cookies","unlimitedStorage","notifications","storage","clipboardWrite"],// 权限申请
"version": "3.0.0"
}
核心部分就是:
"content_scripts":[{
// 多个JS按顺序注入
"js": ["jquery.min.js", "content_script.js"],
"matches": ["http://www.baidu.com/*", "https://www.baidu.com/*"],
// 代码注入的时间,可选值: "document_start", "document_end", or "document_idle",最后一个表示页面空闲时,默认document_idle
"run_at": "document_start",
"all_frames":true
}],
申明注入文件和注入时机以及作用域
除了必要的设置插件名外 还有几个额外引入的文件
background.html:在后台的背景页 这里不重要为空
popup.html 下拉菜单页面 这里不重要 为空
jquery.min.js 引入jq方便操控DOM
icon.png 图标
content_script.js 核心注入类
2.核心注入文件 content_script.js
(function(){
'user strict';
var s = document.createElement('script');
console.log("正在注入js代码");
s.src="https://www.www.wwww/sekiro_web_client-11dfe64bc7024a49ad923239b4a090b3.js"
document.documentElement.appendChild(s);
})();
这里我把渣渣的js上传到静态服务器了,方便访问。也可以本地存放,相对路径即可。
最终的文件目录
安装插件
扩展程序-->加载已解压程序-->选择文件夹
好的 可以打开百度页面了,测试是否注入成功
测试注入成功
接下来可以使用函数接入ws
function guid() {
function S4() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}
var client = new SekiroClient("wss://xx.xx.xx.xx/websocket?group=ws-group-test&clientId="+guid());
client.registerAction("screen_token", function (request, resolve, reject) {
resolve("函数调用");
});
也就是需要提前部署一个长连接服务框架在远程服务器
https://github.com/virjar/sekiro 下载jar包
链接上即可愉快的使用js的RPC功能了。