当前位置: 首页 > 科技观察

Python网络爬虫的js反向远程调用(rpc)免挖代码补环境简介

时间:2023-03-17 10:24:45 科技观察

大家好,我是黑脸怪。本文主要给大家介绍一下jsrpc,方便大家以后遇到JS逆向时能派上用场。前言jsrpc是指在浏览器中开启一个ws和go服务连接,以调用http接口的形式进行通信。浏览器接收到调用通信,执行原来设置好的js代码。可以在js中用来反向调用加密函数直接返回结果,也可以用来直接获取数据。工具和代码已经上传到git,下载后即可使用。下载地址:https://github.com/jxhczhl/JsRpc#jsrpc-hliang代码目录结构--main.go(服务端主要代码)--resouces/JsEnv.js(客户端注入js环境)基本介绍运行服务器程序和js脚本可以让它们进行通信,实现调用接口执行js获取想要的值(加密解密)。实现原理:在网站的控制台新建一个WebSocket客户端链接到服务器,与服务器进行通信,调用服务器接口服务器将发送的信息发送给客户端。客户端接收要执行的方法。执行js代码后,将需要的内容回传给服务器。服务器收到后,会显示出来。说明:该方法可以支持https证书,支持https网站上的wss。如果新的WebSocket连接是连接普通的ws,可能会报安全错误。好像连接本地(127.0.0.1)不会报错~可以用local和wss看玩。没有https证书的。直接编译main.go,我试了一下,发现使用本地ip(127.0.0.1)可以直接连接https网站上的ws,使用默认端口12080。有https证书。修改main.go文件,注释掉r.Run(),取消r.RunTls的注释,并设置带参数证书的路径。直接输入名字就是当前路径。默认端口:12443说句题外话,如果你有域名没有证书是不行的,或者你有域名和公网(非固定IP)也可以自己做。研究和学习。如何使用首先下载编译好的文件,下载地址:https://github.com/jxhczhl/JsRpc/releases/tag/Windows双击打开编译的文件,启动服务。api介绍/列表:查看当前连接的ws服务/ws:浏览器注入ws连接的接口/result:获取数据的接口(数据格式json:{"group":"hhh","hello":"好困耶","name":"baidu","status":"200"})注:接口使用?group和name区分,如注入ws的例子ws://127.0.0.1:12080/ws?group={}&name={},group和name可以任意,这是调用接口:http://127.0.0.1:12080/go?group={}&name={}&action={}?m={},group在上面注入时填写name,action为注册的方法名,param为可选参数。注入JS,搭建通信环境,打开JsEnv,复制粘贴到网站控制台(注意有时候断点需要放开)。注入ws和方法//连接通信vardemo=newHlclient("ws://127.0.0.1:12080/ws?group=hhh&name=baidu");//注册一个方法第一个参数hello是方法名,//第二个参数是一个函数,resolve中的值是想要的值(发送给服务器)//param是一个可以作为参数传递的参数,可以忽略demo.regAction("hello",function(resolve,param){varc="我好困"+param;resolve(c);})访问接口,获取数据http://127.0.0.1:12080/go?group=hhh&name=baidu&action=hello¶m=yes//hello将更改的是操作名称。用代码访问时注意这个名字{"group":"hhh","hello":"Sosleepyyes","name":"baidu","status":"200"}是黑脸。本文主要给大家介绍jsrpc。文章理论性很强,看起来很粗糙,不过别着急,我会给大家几篇使用jsrpc进行逆向工程的文章,把这个工具应用到实际网站中,让大家加深对工具的认识和认识。点击阅读原文,可进入项目git地址。jsrpc是指在浏览器中打开一个ws和go服务连接,以调用http接口的形式进行通信。浏览器接收到调用通信,执行之前设置好的js代码。可以在js中用来反向调用加密函数直接返回结果,也可以用来直接获取数据。以后用在爬虫上可以事半功倍。