Hello,大家好,我是阿粉,前几天阿粉的一个朋友跟阿粉抱怨说自己快被女朋友烦死了,他说自己的女朋友报了一个舞蹈班,因为今年的疫情原因线下课程改成了线上课程,但是因为下班回来比较晚,线上的直播课经常耽误没上到,而且这个课程视频只能在线回看一周,很多复杂的动作要看好多遍才能学会,更由于很多时候种种原因就把课程给拉下了,女朋友就因为这个整天跟他闹,搞的他心里很烦。
听到这里阿粉真想给他一个大嘴巴子,有女朋友已经不错了,还敢嫌女朋友烦,阿粉默默的留下了泪水。不过话说回来如果可以把视频下载下来不就可以一直看了吗?了解的朋友都知道这种课程肯定是不提供下载功能的,但是这个小问题可以阻挡一般人,怎么能阻挡身为程序猿的阿粉呢!
在得知阿粉可以把视频下载下来的时候,阿粉受到了威逼利诱,勉强答应帮他看下能否把视频下载下来。抱着试一下的心态,阿粉要来了舞蹈室的课程地址,进入浏览器提示需要微信扫码登录,这个没什么难度直接截图,让朋友女朋友扫码登录即可。登录进去过后,看到了一系列的课程目录。
阿粉随便点了一个进去回看,就看到一个舞蹈老师在教舞蹈动作,虽然很好看但是阿粉还是没有被吸引住,还是要想办法找到视频的链接地址。本能的在页面上右键检查,查看网页代码找到<video>视频标签,看到里面src 地址是一个blob:http://xxx 格式的地址。虽然阿粉能看懂前端代码但毕竟还是后端为主,刚看到这个地址的时候还是愣了一下,难道这是什么高级协议吗?
咨询了一下度娘然后发现并不是什么高级协议,只是一种标记而已,我们的关键还是要找到有效的资源地址。抱着视死如归的心情,阿粉接着看网页源码,突然阿粉的眼前一亮,因为阿粉看到了吃惊的一个注释,内容如下:
这几个关键词告诉阿粉,这个value 里面一定有可以使用的内容,果不其然,阿粉在里面找到一个 m3u8 文件地址!可能有点小伙伴不知道什么是 m3u8 文件,m3u8 文件里面是很多小段的 ts 视频地址,就相当于把一个长视频分成很多段存在在一个索引文件里面。播放器在拿到 m3u8 文件过后就可以自动下载里面的视频进行播放。
阿粉把这个 m3u8 文件下载下来看了一下,内部确实都是小段 ts 视频,到这里资源的地址我们已经找到了,下面的问题就是需要根据 m3u8 文件下载相应的视频内容就好。这里阿粉在度娘的帮助下找到了名叫 VLC 的视频播放器,这个播放器可以配置网络模式,根据 m3u8 文件地址自动下载视频。
下载 VLC 打开过后,点击 file->advanced open file 在 network 下面按照截图把 m3u8 地址放进去,然后勾选 stream output,在点击 setting 进去设置一下。
点击 browse 选择下载后文件的保存路径,然后在 Video 下拉框中选择 h264 编码,不要问为什么,因为我们下载的 TS 格式视频模式就是用的 h264 编码。通过上面一顿操作,一个视频文件就下载下来了,看到这里朋友在旁边直呼了不起,五体投地。
操作了几波下载了几个视频看了下都能正常播放跟回看的内容没有区别,阿粉把这个方法教给了朋友,这样他就再也不用被女朋友烦了,还能在女朋友面前秀一手,想到这里阿粉又吃狗娘扎心了。
到这里阿粉不得不思考一个问题,我们在日常的编码过程中有没有考虑被别人破解的风险呢?阿粉还不是专业的黑客,就很简单的把一个付费课程给下载下来了,那些更厉害的黑客要想破解简直轻而易举。另外阿粉通过浏览器的控制还看到了许多信息的输出,有些东西是不能输出的,就像我们做后端开发不能将账号密码等敏感信息明文打印日志一样,这些都是存在风险的,一旦被黑客获取到那就是一场重大数据泄露事故。
浏览器的控制台应该只有程序员才会打开看,有的网站控制台还是很有意思的,不知道大家看到过百度网站控制台的信息没,如果你还是学生可以去看一下,说不定会有惊喜哦。