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 你自己看着玩

  1. 无https证书者。直接编译main.go 我试了一下,发现使用本地ip(127.0.0.1)可以在https的网站直接连接ws使用 默认端口12080

  2. 有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={}&param={} //这是调用的接口
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代码相关推荐

  1. Python+Selenium UI自动化 - 调用JS代码

    当webdriver遇到无法完成的操作时候,这个时候可以使用javascript来完成,webdriver提供了execute_script()接口来调用js代码. 执行js有两种场景: 1.在页面上 ...

  2. 调用JShaman的Web API接口,实现JS代码加密。

    在NodeJS中,调用JShaman的Web API接口,实现JS代码加密. 同样的方法,也可把该功能集成到自己的产品或项目中,让自己也具备JS加密功能. 调用JShaman接口的源码非常简单: /* ...

  3. webservice java接口远程调用

    webservice 例如:java接口远程调用 文章目录 webservice 一.使用步骤 1引入Maven依赖 2.读入数据 总结 一.使用步骤 1引入Maven依赖 <!-- axis ...

  4. java 怎么调用js代码_在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: " ...

  5. java实时汇率的接口_eoLinker-API_Shop_汇率查询_API接口_Java调用示例代码

    eoLinker-API Shop 汇率查询 Java调用示例代码 汇率查询 提供汇率转换.单个货币对应的热门货币汇率行情,包括人民币.美元.欧元.英镑等100多种货币的实时汇率查询. 该产品拥有以下 ...

  6. Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)

    场景 Dubbo简介与基本概念: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555224 Dubbo环境搭建-ZooKe ...

  7. HaaS600物联网开发板学习笔记(三)---使用amp工具远程更新js代码

    摘要:在前面的文章中,我们学会了用amp工具推送js代码到HaaS600开发板上,本篇文章讲如何通过amp工具远程推送到设备中.实现这个功能后,如果设备的功能有更新,就不用到现场进行维护了. 实验目的 ...

  8. java 二十四节气,eoLinker-API_Shop_二十四节气查询_API接口_Java调用示例代码

    eoLinker-API Shop 二十四节气查询 Java调用示例代码 二十四节气查询 二十四节气的时间.由来.习俗以及养生 该产品拥有以下APIs: 1.查询二十四节气 2.查询节气详情 注意,该 ...

  9. Angular4中调用js代码

    转自 引言:Angular2开始采用TypeScript进行编码.本文讲述如何在Angular4项目中调用原生的 js 代码. 本文代码 代码使用环境:webstrom 调用过程可以归纳为: 引入 j ...

最新文章

  1. 2021CCF BDCI 大数据与计算智能大赛参赛指南
  2. 操作系统实现(一):从Bootloader到ELF内核
  3. Stanford UFLDL教程 稀疏编码
  4. 22 React高阶组件
  5. 第零讲.1 tapestry项目创建与运行
  6. 成为Java流专家–第2部分:中级操作
  7. pytorch对卷积神经网络常见操作
  8. 【译】变分自编码器教程 一、简介
  9. AIX、hpux、linux 通过nfs文件系统运行oracle 数据库
  10. 大企业中,Java面试官最爱问的问题集锦
  11. Vmware 6.5.1正式版在Ubuntu 8.10下面运行非常缓慢的解决方
  12. 2019刚开年全球天气已“爆表” 多国极端天气打破历史纪录
  13. java actionsupport_ActionSupport与action区别
  14. 玩转oracle视频教程(四)百度云
  15. 随机生成姓名存入mysql_MYSQL随机生成姓名
  16. 干货 | 京东云部署Wordpress最佳实践
  17. java后端实现集成支付宝APP支付(沙箱环境)
  18. 初来乍到,springboot入门项目
  19. 125亿元!华为公开晒年终奖
  20. mt4查看虚拟服务器,mt4 如何查看服务器地址

热门文章

  1. Okio基本使用以及源码分析
  2. 用于降低EMI的时钟展频技术
  3. sql 求同时在线人数(或者同时观看人数/同时浏览人数)
  4. centos os u盘启动盘_U盘安装CentOS
  5. 设置电子围栏 高德地图_Java实现高德地图地理围栏设置功能工具类
  6. K3Cloud BOS设计 Python 插件 弹出列表
  7. ldconfig mysql_ldconfig配置
  8. 动作识别01:Understanding action recognition in still images
  9. 三七互娱Java开发笔试题(2019春季宣讲会)
  10. 高度封装的后端框架-简明ODOO回顾(一): 综述兼扫盲