爬虫JS逆向思路 --(几千块钱都学不到的思路)

本文介绍了一种通过JS逆向获取网站动态数据的方法,包括抓包分析、加密参数破解等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络上几千块都学不到的JS逆向思路这里全都有👏🏻👏🏻👏🏻

本系列持续更新中,三连关注不迷路👌🏻  

干货满满不看后悔👍👍👍

📝个人主页→数据挖掘博主ZTLJQ的主页

b1691e6f246947eeb06ee06469621bc2.gif

个人推荐python学习系列:

☄️爬虫JS逆向系列专栏 - 爬虫逆向教学

☄️python系列专栏 - 从零开始学python


本次要学习的是某榜的数据--本系列提供完整思路

首先我们打开网站,打开F12抓包工具,选择抓包工具中的网络选项,选择XHR抓动态数据。

7e3a9939f2674b1aad7e7245ae387c48.png

可以看到网站的数据是排行榜的类型(这个也算是找动态数据的经验)-- 后面会解释有什么用

52c24da665e94f7eb37157545a302def.jpeg

 

调整好抓包工具后 再次刷新网站 抓取动态数据(可以看到下面的数据)

72ed1b0c696f47e89c8832b4825ba2f3.png

 这个网站的动态数据比较少,如果遇到比较多的动态数据,就可以根据上面我们判断我们要抓的是排行类型的数据,就可以直接定位到rank 排名的意思 找到数据接口

 

找到接口以后--- 点击接口中的预览 看是否有自己需要的数据(图片中已经显示 数据是我们需要的,那就表示已经找到了数据接口)

a1e87c9076ac49779d9879506405d4d5.png

 

接下来就是爬虫逆向的思路步骤了!!!

首先查看请求头是否有加密数据(图片中未发现有加密数据)

9a453af5ab8c40d0a69207a1b2bce4ad.png

 

 其次查看负载中是否有加密数据(图片中有加密数据)-- nonce与xyz都是加密的数据

f1831bc1ade44589ba25c3f2ea2a8a4a.png

那么这个时候就需要我们去解决这个加密的数据了

使用全局搜索,搜索nonce找到加密这个参数的方法

f9613332b1af47559d540f1f779d2d5b.png

点击进入到源代码

然后Ctrl+F 搜索nonce (看到 nonce 打上断点调试)

89757b98e37340e69558c18e0bc8fd56.png

 调试后 可以看到 这个j()函数 就是nonce的加密方法

064bb1515664442f803b8674c0fbdcc7.png

 进入到 j()方法 将j()方法复制下来 

cf6b4f213f62406c969dca49591e86c4.png

这里需要注意一下,这里是单独把js扣下来,所以需要改一下,改成function j(),而不是直接复制下来就可以直接使用的。

function j() {
        for (var a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"], b = 0; b < 500; b++)
            for (var c = "", d = 0; d < 9; d++) {
                var e = Math.floor(16 * Math.random());
                c += a[e]
            }
        return c
}

console.log(j())

 打开pycharm 创建js文件  粘贴刚刚复制的j()方法 运行看看是否能模拟 网站生成nonce

a29f035124bc40028bade858c4161125.png

 运行成功

9d2c4c9712c0486fbbfee6a2c7fb6d45.png

 

成功模拟出nonce以后 接下来就需要找xyz参数的生成方法

👇👇👇

与找nonce同理 但是这里可以看到 是和nonce生成在同一个js 只是使用的是不同的方法

2612b3a03921459482d859f88482bd51.png

根据图片就可以发现,xyz的生成和d()函数是息息相关的,那么我们直接进入d()函数看看是什么样的

cb1999bb66874dd0912aae7eefa30383.png

进入d函数以后可以看到,define里面一个关键字“md5”  这样就说明xyz应该是md5加密的  

接下来就2个思路,第一把整个d函数的js扣下来,用JS运行加密,第二就是用python直接模拟md5算法进行加密

我这里选择的是python直接模拟

但是这里还有一个问题就是,我们并不知道xyz到底是对哪一个参数进行了加密,这里我们就要对js进行调试了,如图我们调试发现,是对其他的全部参数进行加密(因为d()函数里面是h,定位h就是其他全部参数),那么我们就可以进行模拟了

ec9f1407b9634f8a9df351aa3a7d84b5.png

 这里模拟要注意 获取时间的时候 是当前时间-2  因为这个网站是获取到2天之前的数据 

并且这里还需要注意一点,开始的时间和结束的时间一定要设置好然后和其他参数一起写入,再进行加密,代码如下:

# 获取当前时间
now_time = datetime.datetime.now()
end = (now_time + datetime.timedelta(days=-2)).strftime("%Y-%m-%d")
start = (now_time + datetime.timedelta(days=-2)).strftime("%Y-%m-%d")
pojie = '/xdnphb/main/v1/weibo_day/rank?AppKey=joker&end={}&rank_name=个人认证&rank_name_group=&start={}&nonce={}'.format(
    end, start, nonce)
hl = hashlib.md5()
hl.update(pojie.encode(encoding='utf8'))
md5 = hl.hexdigest()
xyz = str(md5)

data = {
    'end': end,
    'rank_name': '个人认证',
    'rank_name_group': '',
    'start': start,
    'nonce': nonce,
    'xyz': xyz
}

 

       本次的思路就这么多,这个系列会一直更新下去,之后我写的项目或者框架都会更新在这个系列中,希望大家多多支持。

       真诚的希望,这篇文章对大家有用,也希望大家能够学习到爬虫的精髓。✍🏻✍🏻✍🏻

 

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZTLJQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值