用 Python 爬虫逆向破解请求头加密参数

01

逆向目标                               

逆向网站:

aHR0cHM6Ly9zb2xzY2FuLmlvL2xlYWRlcmJvYXJkL3Byb2dyYW0/cGFnZT0xJnJhbmdlPTMw

逆向接口:

aHR0cHM6Ly9hcGkuc29sc2Nhbi5pby92Mi9wdWJsaWNpemUvYWxs
图片
02

前期准备                               

欲行其事,必先利其器,本期逆向实战需要 3 个第三方库:

用于模拟接口请求的:

pip install requests

用于模拟执行JS的:

pip install PyExecJS

用于存储数据的:

pip install pandas

 

图片
03

逆向分析                              

进入该网站,使用开发者工具,进行接口分析:

图片

 

该接口为:

https://api.小鸿爱摸鱼.io/v2/publicize/all
鼠标滑到最下面发现该接口拥有请求头加密字段:

图片

Sol-Aut 加密的值为:

v257KTy4MWB9dls0fKZUyuXhZD8qMS0QdcGm9-b4

并且经过多次测试确认该请求头加密字段是动态变化的,意味着我们需要找出其中的加密逻辑

全局搜索

逆向分析中最简单直接的方式就是全局搜索,按快键键【Ctrl+Shift+f】搜索字符串 Sol-Aut:

图片

运气不错,只有一个 JS 文件包含该请求头加密参数,点击找到其加密入口

由上图可知,this.randomString 就是加密位置,我们按快捷键【Ctrl+f】搜索该字符串,发现 this.randomString 是由 this.generateRandomString() 函数赋值的:

图片

和上次操作一样,搜索字符串 generateRandomString 发现加密函数的代码块,全是 JS 的基本语法,不需要引入其他 JS 文件,也不需要引入什么包:

图片

图片
04

模拟执行 JS                         

根据之前的逆向分析,把相关的 JS 加密函数复制下来,保存为:header_encrypt.js 文件:

function generateRandomString() {
    let e = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789==--"
      , t = Array(16).join().split(",").map(function() {
        return e.charAt(Math.floor(Math.random() * e.length))
    }).join("")
      , r = Array(16).join().split(",").map(function() {
        return e.charAt(Math.floor(Math.random() * e.length))
    }).join("")
      , n = Math.floor(31 * Math.random())
      , o = "".concat(t).concat(r)
      , a = [o.slice(0, n), "B9dls02fK", o.slice(n)].join("");
    return a;
};

console.log(generateRandomString());
使用 Node.js 执行该 JS 文件查看控制台输出结果:

图片

成功构造出请求头加密字段 Sol-Aut,经测试,该加密字符串是有效的

接下来只需要使用 PyExecJS 库模拟执行 JS 调用函数 generateRandomString() 即可获取请求头加密字段,相关代码如下:

import execjs


def encrypt_params():
    file = 'sol-aut.js'
    node = execjs.get()
    ctx = node.compile(open(file).read())
    js = f'generateRandomString()'
    sol_aut = ctx.eval(js)
    # sol_aur = ctx.call('generateRandomString')

    print(sol_aur)
    return sol_aut
输出结果和上面是一样的。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/90117.html

(0)
guozi's avatarguozi
上一篇 2024年6月5日 上午11:49
下一篇 2024年6月5日 上午11:52

相关推荐

  • 服务器防护

    服务器防护,这个看似陌生的名词,却是我们日常工作中必不可少的一环。它是什么?为什么需要它?常见的服务器安全威胁又有哪些?针对这些问题,我们为您精心准备了一系列解决方案。让我们一起来…

    行业资讯 2024年3月29日
    0
  • 如何申请腾讯企业邮箱?

    想要拥有一款专业、高效的企业邮箱吗?那就来看看腾讯企业邮箱吧!它不仅拥有强大的功能特点,还能为你的企业提供完善的服务。那么,如何申请腾讯企业邮箱呢?它的价格标准又是怎样的呢?让我们…

    行业资讯 2024年4月9日
    0
  • 做网站贵吗,做网站的费用属于什么费用

    建立网站时,需要付费。但为什么要建网站?什么是重要的?网站收费的方式有哪些?如何控制建站成本?这些问题您一定都曾困惑过。请不要担心。接下来我来解答。只需阅读几分钟,即可了解有关网站…

    行业资讯 2024年4月10日
    0
  • 如何利用谷歌seo优化网站流量?

    你是否想要提高网站的流量?你是否想要让自己的网站更容易被搜索引擎发现?如果是的话,那么不可错过这篇文章!今天我们将会为您介绍谷歌SEO优化,帮助您了解什么是SEO,以及谷歌SEO优…

    行业资讯 2024年4月2日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注