Python网络爬虫之js逆向之远程调用(rpc)免去抠代码补环境简介

大家好,我是黑脸怪。这篇文章主要给大家介绍jsrpc,方便大家日后在遇到JS逆向的时候派上用场。

前言

jsrpc是指在浏览器开启一个ws和go服务连接,以调用http接口的形式来通信,浏览器端收到调用通信执行原先设置好的js代码。可以用于js逆向调用加密函数直接返回结果,也可以用来直接获取数据。

该工具和代码,已经上传到git,下载即可用。

image

下载地址:https://github.com/jxhczhl/JsRpc#jsrpc-hliang

代码目录结构

1-- main.go (服务器的主代码) 2-- resouces/JsEnv.js (客户端注入js环境) 3

基本介绍

运行服务器程序和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的)都可以搞成的,自己研究研究。

使用方法

首先下载编译好的文件,下载地址:https://github.com/jxhczhl/JsRpc/releases/tag/Windows

image

直接双击打开编译好的文件,开启服务。

image

api 简介

  • /list :查看当前连接的ws服务
  • /ws :浏览器注入ws连接的接口
  • /result :获取数据的接口 (数据格式json: {"group":"hhh","hello":"好困啊yes","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 复制粘贴到网站控制台(注意有时要放开断点)。

image

注入ws与方法

1// 连接通信 2var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=hhh&name=baidu"); 3// 注册一个方法 第一个参数hello为方法名, 4// 第二个参数为函数,resolve里面的值是想要的值(发送到服务器的) 5// param是可传参参数,可以忽略 6demo.regAction("hello", function (resolve, param) { 7 var c = "好困啊" + param; 8 resolve(c); 9}) 10

image

访问接口,获得数据

1http://127.0.0.1:12080/go?group=hhh&name=baidu&action=hello¶m=yes 2// 其中 hello是会变的 是action名字。 用代码访问的时候要注意这个名字 3{ 4 "group":"hhh", 5 "hello":"好困啊yes", 6 "name":"baidu", 7 "status":"200" 8} 9

image

总结

大家好,我是黑脸怪。 这篇文章主要给大家介绍jsrpc,文章的理论性很强,看上去十分的粗犷,不过别担心,接下来我给大家出几篇关于使用jsrpc来进行逆向的文章,针对实际的网站应用此工具,让大家加深对该工具的理解和认识。点击阅读原文,即可可以前往项目git地址。

jsrpc是指在浏览器开启一个ws和go服务连接,以调用http接口的形式来通信,浏览器端收到调用通信执行原先设置好的js代码。可以用于js逆向调用加密函数直接返回结果,也可以用来直接获取数据。日后用在爬虫中,可以事半功倍。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Jsrpc学习——加密参数Sign变化的网站破解教程

大家好,我是皮皮。前几天给大家分享jsrpc的介绍篇,Python网络爬虫之js逆向之远程调用(rpc)免去抠代码补环境简介,还有实战篇,Jsrpc学习——网易云热评加密函数逆向,Jsrpc学习——Cookie变化的网站破解教程感兴趣的小伙伴可以戳此文前往。今天给大家来个jsrpc实战教程,让大家加深对jsrpc的理解和认识。下面是具体操作过程,不懂的小伙伴