前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js 逆向,美拍视频下载

js 逆向,美拍视频下载

作者头像
用户6825444
发布2019-12-18 11:52:55
1.2K0
发布2019-12-18 11:52:55
举报
文章被收录于专栏:木下学Python木下学Python

简介

美拍网页版热门视频:

https://www.meipai.com/medias/hot

下载每一页的视频,但由于视频链接是加密了的,需要 js 逆向解码,才可得到链接。

链接构造

可看到每一页的 url 类似这样,就 page= 字段不同:

https://www.meipai.com/home/hot_timeline?page=3&count=12

page=1:第一页

page=2:第二页

以此类推

视频链接

切换到旁边的 Preview 选项卡,可以看到 json 数据,其中的 vedio 键所对的那一串乱码就是视频链接

我们需要解码,获得原来的链接,然后才能下载

接下来一步一步来看怎么解码

js 逆向

右键查看元素,可以看到 data-video 所对的值是一串乱码,而 src 所对的值是视频播放的的链接

随便点开一个视频,还可以看到 data-vedio 和 src 字段

切换到 Source 选项卡,2 号是这个网站所有的文件,我们就需要在 3 里面搜索找到可疑的解码的 js 代码;

搜索的是关键词,关键词是不确定的,要想到和要解码的数据有关,比如说 vedio:xxxx,xxxx是要解码的数据,那可以先尝试搜索 vedio 看能不能搜索得到相应的代码,不能的话可以试试 decode,encode,因为和解码编码有关;

在这个问题中,我们视频链接是 .mp4,试着在 2 从上往下一个一个 js 文件的搜索 mp4,下图搜索到了但看代码不太像

继续找下一个 js 文件,在一个 js 文件中找到了一个带有关键字 decodeMp4 的字段,这个函数可能就是解码的函数了,两个绿色断点中间的部分

在这行代码行数那里打断点,按 F5 刷新,运行到这里会停止,网页呈灰色状态,然后看看这个 decodeMp4 函数里,有没有调用了其他函数,这里发现了一个 atob 函数,把鼠标悬停在上面可以看到调用的地方,点击

点击后看到了这个函数,它最后返回了一个值,好了现在解码函数都找到了,需要把他们扣出来结合 Python使用

扣代码

在这个decodeMp4 函数中可以看到它有 5 个函数1,2,3,4,5

先只把这些函数扣出来,像这样,最好像上面1,2,3,4,5按顺序放,调用的时候就方便清楚一点,大致读代码它们是从上往下调用关系,然后先调试好在用 python 调用

具体的扣的代码,详细看源代码吧,在调试时,如果按原来的扣下来直接运行,总会报一些错:

window。。。:这是 js 在前端显示的语法,删掉

某个变量没定义:可能在扣函数时,原 js 代码中在这个函数前后可能有定义,但我们只扣了函数,没扣变量,也扣下来

this。。。:因为在原 js 代码中是,函数内部调用函数内部,扣出来后要改成调用的函数名

没有了错误后,接下来用 python 调用了,python 执行 js 代码,使用了 execjs 库执行。

.compile:编译打开的 js 字符串

.call():第一个参数为调用 js 的函数名,第二个为此函数的参数

Final

最后扣好了后,写爬虫下载视频,详细见源码,小编只下了 2个 视频作为结果作为参考

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木下学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档