做爬虫,一般分两个大方向,一个是抓网页,一个是抓app。比如同一个数据,你去分别抓两者(假设都存在的话)他们两者有相似相同的部分,也有区别,比如同样能拿到数据,难易程度却不同,或者是在app抓包中发现了接口,但是对关键参数的解密却无能为力的时候,你就可以试试同样的参数,观察在网页上是如何进行加密的,也就是引申出这篇分享的应用场景:
那就是通过抓包找到接口之后,进行关键参数的逆向JS解密,达到拿到数据的目的。
今天的这个例子是美拍,在实际工作中我接到的需求是抓取到最新的热门推荐视频,需要真实地址,时长,热度等信息,通过在网页端刷新“更多内容”,我们发现了一个接口:
https://www.meipai.com/home/get_more_squares?id=59%2C27%2C423%2C18%2C6
得到的数据是:
可是真实的地址是:
两者之间并没有直接的关联,所以现在的任务就变成了如何通过接口返回的数据拿到真实地址,这时候我们需要继续观察网页上是如何生成真实地址的了。
首先通过检查元素找到这个点击按钮的元素所在位置:
我们找到目标元素所在位置之后,观察可以看到class是 mp-h5-player-layer-play 然后再到右边查看
点击之后就能直接看到红圈部分是包含这个元素class属性,我们点进去,然后格式化这个文件
于是就变成了方便我们观察的样子,好了,耗时的工作就要来了,我们需要在这茫茫的js代码中找到我们需要的部分,也就是如何将接口返回的数据转化为真实地址的部分,在这个过程中我们可以通过关键字和断点调试来加快我们定位的速度,比如src mp4等
通过几个搜索筛选之后发现最有可能的就是这里
然后就需要我们一步步的进行断点调试来找到视频地址生成的轨迹了
红色部分正是之前接口返回的video的值,然后观察k使用了哪些方法把之前video的这一串值转化