• Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案


    Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案

    声明:知乎加密逆向分析仅用于研究和学习,如有侵权,可联系删除

    大家好,续《Python爬虫之Js逆向案例(5)-知乎搜索》分享之后,有小伙伴私信我说知乎加密方案变了,让我再出一期关于新版的逆向分享,这次不同上次,虽然加密方法用的还是jsvmp方案,但是整个过程难度貌似增加了不少,也确实有一定难度,很多同学私信说,代码抠出来了,结果还有反调试,每次 debuger 都报错、、、,debuger报错这个地方只需要把 case 368 的那个500毫秒阀值调大,或者直接把三目运算改成this.T -= 8;就可以调试了。如果细心的小伙伴研究过《案例1》(下架了,可前往掘金,搜索同系列)的老加密代码,这个反调试老加密也是有的,只不过当时的加密代码抠出来可以直接运行拿到结果,所以大家就没注意看具体加密逻辑就忽略了。如果想直接破解vmp加密过程的话,还是很难的,不建议这样做,太费时间了,提示一下,感兴趣的可以了解一下vmp加密的插桩,回吐环境调用的值,然后缺啥补啥就行了。本节分享的内容是js逆向必备技能之一,jsrpc

    为了照顾刚入门童鞋,文章每一步的分析过程尽可能的详细(有经验的同学可以选择感兴趣的地方快速浏览)

    下面会进行以下几步进行分析(下方演示过程全部使用chrome浏览器);

    1. 什么是jsrpc?;
    2. jsrpc工具;
    3. 本案例使用rpc如何实现;
    4. python爬虫结果演示;

    一.什么是jsrpc?

    jsrpc的原理是利用websocket通信技术实现的通过调用socket服务,通知放在浏览器端的socket执行相关代码,拿到结果后客户端发送给服务器,然后再返回给接口调用者技术(个人理解,不一定很准确),说白了就是websocket的具体应用罢了!

    JSRPC原理

    在这里插入图片描述
    简单画了个原理图,根据1,2,3,4,5流程大致看一下,有个印象就行了;

    rpc优点:

    1. 无需关心加密内部的具体算法;
    2. 无需关心加密代码运行的环境,不用补环境;

    二.jsrpc工具

    GItHub上有一位大神写的工具,这次案例用的也是这个,很方便,下面是链接:
    https://github.com/jxhczhl/JsRpc
    这个工具文档写的很详细,我就不在啰嗦了,大家自行前往查看;

    三.本案例rpc如何实现

    首先下载安装包:
    在这里插入图片描述
    我下载的是下面这个,本地运行的话,无需配置证书,如果用https配证书什么的,稍微有点费事!
    在这里插入图片描述
    下载完成后是一个exe文件,直接双击运行,如下图:
    在这里插入图片描述
    这样就启动了rpc的服务器;接下来我们准备浏览器端需要插入的代码;

    浏览器端代码准备

    根据文档提示,我们把里面的代码拷贝出来,放到一个js文件中,例如zh_rpc.js,
    在这里插入图片描述
    再把下面这段代码放到zh_rpc.js代码的最后面,

    
    // 注入环境后连接通信
    var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=zzz&name=hlg");
    // 注册一个方法 第一个参数hello3为方法名,
    // 第二个参数为函数,resolve里面的值是想要的值(发送到服务器的)
    demo.regAction("hello3", function (resolve, param) {
      //这里还是param参数 param里面的key 是先这里写,但到时候传接口就必须对应的上
      const tempFormatUrl = param['str'];
      console.log(843, param['str']);
      res = get_sig(tempFormatUrl)
      console.log(874, res);
      resolve(res);
    })
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这个时候socket相关的东西代码已经准备完了。我这边是把x-zse-96字段的加密给抠出来了,有md5+vmp的代码,所以此时我把加密代码放到了zh_rpc.js中代码的最上面;

    此时浏览器端的代码就完成了;

    我们打开知乎的网站,把上面的代码拷贝出来,直接粘贴到控制台上,或者像我这样,新建一个snippet,把代码拷贝到这里,如下图:

    在这里插入图片描述

    上面点击运行后,控制台会出现相关log,其中有一条logtrue,上图控制台里的843,874是后面python调用时这边才打印的。

    浏览器端的socket代码也已经启动了,下面开始准备python端代码。

    python 代码准备

    在这里插入图片描述
    准备好爬虫代码之后,就可以正常运行这个文件拿到接口数据了;

    python爬虫结果演示

    在这里插入图片描述
    这里只演示了x-zse-96字段获取,其他字段也是一样的,比如x-zst-81

    rpc技能也是学习逆向时的必备技能,这种方案能快速爬取你想要的数据,如果大家按步就班的去破解新的加密算法的话,那对一个老手来说差不多也要2天才能拿到数据,对新手来说,想拿到这个最新加密下的数据还是很难的吧,所以这个技能一定要掌握了哦!有疑问的可留言或私信我!!!消息必回!


    后期会持续分享爬虫案例-100例,不想自己造轮子的同学可加入我的知识星球,有更多技巧、高能总结,答疑提问特权等你哦!!!;

    欢迎加入「python、爬虫、逆向Club」知识星球

  • 相关阅读:
    Polygon Miden VM中的哈希函数对比
    《数字图像处理》作业一:题目+学习笔记
    谷粒学苑_第五天
    Maven依赖管理项目构建工具(保姆级教学---下篇)
    2022“杭电杯”中国大学生算法设计超级联赛(7)
    漏洞深度分析|Apache Airflow example_bash_operator DAG 远程代码执行漏洞
    DP4361国产六通道立体声D/A音频转换器芯片替代CS4361
    HTTPS协议原理
    Nginx 简介、安装与配置文件详解
    Ubuntu20.24安装记录——安装VM-Tools
  • 原文地址:https://blog.csdn.net/li11_/article/details/126337080