jsrpc-http接口远程调用js代码
JsRPC-hliang
– js逆向之远程调用(rpc)免去抠代码补环境
tip:懒得自己编译的 ,releases中有已经编译好的包 (win和Linux的都有~)
文章目录
- JsRPC-hliang
- 目录结构
- 基本介绍
- 实现
- 食用方法
- 打开编译好的文件,开启服务
- 注入JS,构建通信环境
- 注入ws与方法
- 远程调用1:无参获取值
- 远程调用2:带参获取值
- 远程调用3:带多个参获 并且使用post方式 取值
- 食用案例-爱锭网15题
- TODO
目录结构
-- main.go (服务器的主代码)
-- resouces/JsEnv.js (客户端注入js环境)
基本介绍
运行服务器程序和js脚本 即可让它们通信,实现调用接口执行js获取想要的值(加解密)
实现
原理:在网站的控制台新建一个WebScoket客户端链接到服务器通信,调用服务器的接口 服务器会发送信息给客户端 客户端接收到要执行的方法执行完js代码后把获得想要的内容发回给服务器 服务器接收到后再显示出来
说明:本方法可以https证书且支持wss
在https的网站想要新建WebSocket连接如果是连接到普通的ws可能会报安全错误,好像连接本地(127.0.0.1)不会报错~ 可以用本地和wss 你自己看着玩
无https证书者。直接编译main.go 我试了一下,发现使用本地ip(127.0.0.1)可以在https的网站直接连接ws使用 默认端口12080
有https证书者。修改main.go文件 把r.Run()注释掉,把r.RunTls注释取消掉 并且参数设置证书的路径 直接输入名字就是当前路径 默认端口:12443
另外的题外话,有域名没证书不会搞的 或者有域名有公网(非固定IP的)都可以搞成的,自己研究研究
食用方法
打开编译好的文件,开启服务
如下图所示
api 简介
/list
:查看当前连接的ws服务/ws
:浏览器注入ws连接的接口/go
:获取数据的接口 (可以get和post)
说明:接口用?group和name来区分任务 如 ws://127.0.0.1:12080/ws?group={}&name={}" //注入ws的例子 group和name都可以随便起名,必填选项
http://127.0.0.1:12080/go?group={}&name={}&action={}¶m={} //这是调用的接口
group和name填写上面注入时候的,action是注册的方法名,param是可选的参数 接口参数暂定为这几个,但是param还可以传stringify过的json(字符串) 下面会介绍
注入JS,构建通信环境
打开JsEnv 复制粘贴到网站控制台(注意有时要放开断点)
注入ws与方法
// 注入环境后连接通信
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=zzz&name=hlg");
远程调用1:无参获取值
// 注册一个方法 第一个参数hello为方法名,
// 第二个参数为函数,resolve里面的值是想要的值(发送到服务器的)
demo.regAction("hello", function (resolve) {//这样每次调用就会返回“好困啊+随机整数”var Js_sjz = "好困啊"+parseInt(Math.random()*1000);resolve(Js_sjz);
})
访问接口,获得js端的返回值
http://localhost:12080/go?group=zzz&name=hlg&action=hello
远程调用2:带参获取值
//写一个传入字符串,返回base64值的接口(调用内置函数btoa)
demo.regAction("hello2", function (resolve,param) {//这样添加了一个param参数,http接口带上它,这里就能获得var base666 = btoa(param)resolve(base666);
})
访问接口,获得js端的返回值
远程调用3:带多个参获 并且使用post方式 取值
//假设有一个函数 需要传递两个参数
function hlg(User,Status){return User+"说:"+Status;
}demo.regAction("hello3", function (resolve,param) {//这里还是param参数 param里面的key 是先这里写,但到时候传接口就必须对应的上res=hlg(param["user"],param["status"])resolve(res);
})
访问接口,获得js端的返回值
url = "http://localhost:12080/go"
data = {"group": "zzz","name": "hlg","action": "hello3","param": json.dumps({"user":"黑脸怪","status":"好困啊"})
}
print(data["param"]) #dumps后就是长这样的字符串{"user": "\u9ed1\u8138\u602a", "status": "\u597d\u56f0\u554a"}
res=requests.post(url, data=data) #这里换get也是可以的
print(res.text)
食用案例-爱锭网15题
本题解是把它ajax获取数据那一个函数都复制下来,然后控制台调用这样子~1.f12查看请求,跟进去 找到ajax那块,可以看到call函数就是主要的ajax发包 输入页数就可以,那我们复制这个函数里面的代码备用
2.先在控制台粘贴我的js环境,再注入一个rpc链接 注册一个call方法,名字自定义 第二个参数粘贴上面call的代码,小小修改一下先定义num=param 这样就传参进来了,再定义一个变量来保存获取到的数据,resolve(变量) 就是发送。完了就注入好了,可以把f12关掉了
3.调用接口就完事了,param就是传参页数
控制台可以关,但是注入的网页不要关哦
TODO
- ssl Docker Deploy
- K8s Deploy
jsrpc-http接口远程调用js代码相关推荐
- Python+Selenium UI自动化 - 调用JS代码
当webdriver遇到无法完成的操作时候,这个时候可以使用javascript来完成,webdriver提供了execute_script()接口来调用js代码. 执行js有两种场景: 1.在页面上 ...
- 调用JShaman的Web API接口,实现JS代码加密。
在NodeJS中,调用JShaman的Web API接口,实现JS代码加密. 同样的方法,也可把该功能集成到自己的产品或项目中,让自己也具备JS加密功能. 调用JShaman接口的源码非常简单: /* ...
- webservice java接口远程调用
webservice 例如:java接口远程调用 文章目录 webservice 一.使用步骤 1引入Maven依赖 2.读入数据 总结 一.使用步骤 1引入Maven依赖 <!-- axis ...
- java 怎么调用js代码_在Java中直接调用js代码
JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: " ...
- java实时汇率的接口_eoLinker-API_Shop_汇率查询_API接口_Java调用示例代码
eoLinker-API Shop 汇率查询 Java调用示例代码 汇率查询 提供汇率转换.单个货币对应的热门货币汇率行情,包括人民币.美元.欧元.英镑等100多种货币的实时汇率查询. 该产品拥有以下 ...
- Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)
场景 Dubbo简介与基本概念: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555224 Dubbo环境搭建-ZooKe ...
- HaaS600物联网开发板学习笔记(三)---使用amp工具远程更新js代码
摘要:在前面的文章中,我们学会了用amp工具推送js代码到HaaS600开发板上,本篇文章讲如何通过amp工具远程推送到设备中.实现这个功能后,如果设备的功能有更新,就不用到现场进行维护了. 实验目的 ...
- java 二十四节气,eoLinker-API_Shop_二十四节气查询_API接口_Java调用示例代码
eoLinker-API Shop 二十四节气查询 Java调用示例代码 二十四节气查询 二十四节气的时间.由来.习俗以及养生 该产品拥有以下APIs: 1.查询二十四节气 2.查询节气详情 注意,该 ...
- Angular4中调用js代码
转自 引言:Angular2开始采用TypeScript进行编码.本文讲述如何在Angular4项目中调用原生的 js 代码. 本文代码 代码使用环境:webstrom 调用过程可以归纳为: 引入 j ...
最新文章
- 2021CCF BDCI 大数据与计算智能大赛参赛指南
- 操作系统实现(一):从Bootloader到ELF内核
- Stanford UFLDL教程 稀疏编码
- 22 React高阶组件
- 第零讲.1 tapestry项目创建与运行
- 成为Java流专家–第2部分:中级操作
- pytorch对卷积神经网络常见操作
- 【译】变分自编码器教程 一、简介
- AIX、hpux、linux 通过nfs文件系统运行oracle 数据库
- 大企业中,Java面试官最爱问的问题集锦
- Vmware 6.5.1正式版在Ubuntu 8.10下面运行非常缓慢的解决方
- 2019刚开年全球天气已“爆表” 多国极端天气打破历史纪录
- java actionsupport_ActionSupport与action区别
- 玩转oracle视频教程(四)百度云
- 随机生成姓名存入mysql_MYSQL随机生成姓名
- 干货 | 京东云部署Wordpress最佳实践
- java后端实现集成支付宝APP支付(沙箱环境)
- 初来乍到,springboot入门项目
- 125亿元!华为公开晒年终奖
- mt4查看虚拟服务器,mt4 如何查看服务器地址
热门文章
- Okio基本使用以及源码分析
- 用于降低EMI的时钟展频技术
- sql 求同时在线人数(或者同时观看人数/同时浏览人数)
- centos os u盘启动盘_U盘安装CentOS
- 设置电子围栏 高德地图_Java实现高德地图地理围栏设置功能工具类
- K3Cloud BOS设计 Python 插件 弹出列表
- ldconfig mysql_ldconfig配置
- 动作识别01:Understanding action recognition in still images
- 三七互娱Java开发笔试题(2019春季宣讲会)
- 高度封装的后端框架-简明ODOO回顾(一): 综述兼扫盲