SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑


目录

        • 一、流程简单了解
        • 二、补环境的方式
        • 三、扣逻辑的方式

一、流程简单了解
  • 案例网址:点击查看
  • 请求头参数x-zse-96
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片
二、补环境的方式
  • 这个案例网上太多太多太多太多了,那我就跟着前辈的20篇文章思路,补环境试一试,此次补环境(node下npm install jsdom)需要的代码如下
    const jsdom = require("jsdom"); const { JSDOM } = jsdom; const dom = new JSDOM(`Hello world
    `); window = dom.window; document = window.document; XMLHttpRequest = window.XMLHttpRequest;

  • 定位入口:采用搜索关键词x-zse-96定位,如图11703行的signature打上断点,x-zse-96=“2.0_” +signature,如图只需要研究u()函数,而u()函数就是__g._encrypt(encodeURIComponent(e))这个结果
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片
  • 所以研究__g._encrypt函数,__g._encrypt函数又是r()函数,所以扣r()函数所在的范围部分,__g._encrypt函数传入md5值即可解出我们要的signature
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片
  • r()函数如下,这里直接将当前js文件所有的js代码先复制下来,然后把所有函数先折叠起来
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片
  • 然后搜索var A = "2.0"去定位函数体,扣出函数体
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片
  • 接着头部加上相关环境jsdom,尾部加上输出,测试运行即可生成signatrue
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片
  • 至此补环境结束,测试结果正常,这个案例单看补环境分分钟解决问题(前辈文章太多约20篇,所以就比较容易),不过也可以看看扣算法的方式
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片
三、扣逻辑的方式
  • 定位入口:采用搜索关键词x-zse-96定位,如图11703行的signature打上断点,x-zse-96=“2.0_” +signature
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片

  • 清除缓存,刷新定位,js中signature: u()(f()(s))分析见图中,我们要研究signature就是研究这个u()函数即可
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片

  • u()函数如图,经过深层的调试,我们会到如图G.prototype.v 的位置,在37026行打上日志断点"索引:", this.C, " 值:", JSON.stringify(this.r),然后清除缓存刷新输出大概有1.7k的日志,从日志里面推算算法逻辑
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片

    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片

  • signature是由11部分组成,且4个为一组
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片

  • 【SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑】看这篇文章,以及这篇文章,会了解如何逆推算法,最终算法就30多行
    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片

    SpiderCrawl|js逆向案例-某知x-zse-96补环境与扣逻辑
    文章图片

    推荐阅读