本系列持续更新中,三连关注不迷路
干货满满不看后悔
个人主页→数据挖掘博主ZTLJQ的主页
个人推荐python学习系列:
☄️爬虫JS逆向系列专栏 - 爬虫逆向教学
☄️python系列专栏 - 从零开始学python
本次要学习的是某榜的数据--本系列提供完整思路
首先我们打开网站,打开F12抓包工具,选择抓包工具中的网络选项,选择XHR抓动态数据。
可以看到网站的数据是排行榜的类型(这个也算是找动态数据的经验)-- 后面会解释有什么用
调整好抓包工具后 再次刷新网站 抓取动态数据(可以看到下面的数据)
这个网站的动态数据比较少,如果遇到比较多的动态数据,就可以根据上面我们判断我们要抓的是排行类型的数据,就可以直接定位到rank 排名的意思 找到数据接口
找到接口以后--- 点击接口中的预览 看是否有自己需要的数据(图片中已经显示 数据是我们需要的,那就表示已经找到了数据接口)
接下来就是爬虫逆向的思路步骤了!!!
首先查看请求头是否有加密数据(图片中未发现有加密数据)
其次查看负载中是否有加密数据(图片中有加密数据)-- nonce与xyz都是加密的数据
那么这个时候就需要我们去解决这个加密的数据了
使用全局搜索,搜索nonce找到加密这个参数的方法
点击进入到源代码
然后Ctrl+F 搜索nonce (看到 nonce 打上断点调试)
调试后 可以看到 这个j()函数 就是nonce的加密方法
进入到 j()方法 将j()方法复制下来
这里需要注意一下,这里是单独把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
运行成功
成功模拟出nonce以后 接下来就需要找xyz参数的生成方法
与找nonce同理 但是这里可以看到 是和nonce生成在同一个js 只是使用的是不同的方法
根据图片就可以发现,xyz的生成和d()函数是息息相关的,那么我们直接进入d()函数看看是什么样的
进入d函数以后可以看到,define里面一个关键字“md5” 这样就说明xyz应该是md5加密的
接下来就2个思路,第一把整个d函数的js扣下来,用JS运行加密,第二就是用python直接模拟md5算法进行加密
我这里选择的是python直接模拟
但是这里还有一个问题就是,我们并不知道xyz到底是对哪一个参数进行了加密,这里我们就要对js进行调试了,如图我们调试发现,是对其他的全部参数进行加密(因为d()函数里面是h,定位h就是其他全部参数),那么我们就可以进行模拟了
这里模拟要注意 获取时间的时候 是当前时间-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
}
本次的思路就这么多,这个系列会一直更新下去,之后我写的项目或者框架都会更新在这个系列中,希望大家多多支持。
真诚的希望,这篇文章对大家有用,也希望大家能够学习到爬虫的精髓。✍✍✍