js逆向-某音乐网站data参数

发布于:2023-05-22 ⋅ 阅读:(383) ⋅ 点赞:(1)

现在很多歌曲都要付费才能下载或播放,确实是很难受。对于爬虫工程师来说更是叔叔能忍,婶婶不能忍!!!
Alt
笔者无意间发现了一个免费的音乐网站,歌曲质量很高而且还是免费,感兴趣的同学可以自行收藏一下。

aHR0cDovL3Rvb2xzLmxpdW1pbmd5ZS5jbi9tdXNpYy8/cGFnZT1zZWFyY2hQYWdl

这个网站虽然说下载免费,但是我们想批量下载还要一个一个慢慢点,很麻烦。于是我默默的打开F12
Alt
随便以一首歌为例,点击搜索,如下图:

在这里插入图片描述
发现成功找到服务器返回的信息,再剩下的内容就是用爬虫去批量下载歌曲就大功告成了,简直完美。

进一步分析发现post请求中的data参数进行了加密。接下来又到了熟悉的逆向环节。

Alt

加密分析

搜索返回的数据包是xhr,source面板下添加一个xhr断点

在这里插入图片描述
继续点击下一页,发现果然断下来了。接下来在堆栈中寻找加密的地方就OK了。在这里插入图片描述
在这里插入图片描述
加密的地方还是比较简单的,可以看到使用encode函数进行加密,函数的参数是字符串的拼接
在这里插入图片描述
其中bdsearchType这三个值通过js获取
在这里插入图片描述
b是搜索的关键字,searchType是搜索的类型,d是页数初始值为1,不断进行翻页累加。
到这里就已经清楚逻辑了,接下来把代码扣下来然后使用python编写代码请求就没有问题了。

抠代码

在这里插入图片描述
打上断点,跟进encode函数中
在这里插入图片描述
把整个encode函数拿出来放在本地进行调试
在这里插入图片描述
提示缺少_0x5e84,本着缺啥补啥的原则,把_0x5e84找到拿到本地
在这里插入图片描述提示缺少_0x2494,继续把_0x2494找到扣下来。
在这里插入图片描述
提示location没有定义,定义一个就好了。
在这里插入图片描述
又继续报错,肯定是环境没有补好,
在这里插入图片描述
回到网页中找到该行看看是哪有出了问题
在这里插入图片描述
在这里插入图片描述
在location对象中补上这两个属性就不会报错了

window = global;
window.location = {
    host: "tools.liumingye.cn",
    protocol: "http:"
};

如果嫌补环境麻烦,可以直接copy location,多补总是不会错的

window = global;
window.location ={
    "ancestorOrigins": {},
    "href": "http://tools.liumingye.cn/music/?page=audioPage&type=migu&name=%E7%88%B1%E4%BD%A0",
    "origin": "http://tools.liumingye.cn",
    "protocol": "http:",
    "host": "tools.liumingye.cn",
    "hostname": "tools.liumingye.cn",
    "port": "",
    "pathname": "/music/",
    "search": "?page=audioPage&type=migu&name=%E7%88%B1%E4%BD%A0",
    "hash": ""
}

继续调试发现还是报错
在这里插入图片描述
md5没有定义,接着把md5扣出来就可以了。
在这里插入图片描述
大功告成!
接下来使用python请求,测试能否得到结果
在这里插入图片描述
这里就顺利的得到了结果,打开浏览器也是可以播放的
在这里插入图片描述

至此,整个分析就结束了。

本文仅供学习使用,切勿非法使用,如有侵权请联系作者及时删除!
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到