抓取网页视频(编程截取视频有了思路,我们就可以开始编程了)

优采云 发布时间: 2021-10-21 11:06

  抓取网页视频(编程截取视频有了思路,我们就可以开始编程了)

  昨天想在网上下载一个稍微小一点的MP4视频文件,但是在网上找了半天也没找到。现在视频网站上的很多视频只支持在线播放,不提供下载链接。网上也有一些工具可以实现这样的功能,但是我现在还没找到有用的。

  想法

  打开一个MV的时候,正想着要找视频的地址,于是打开了FireFox的Firebug,然后看了看,发现有一个请求耗时很长,而且体积非常大。仔细一看,原来是一个mp4文件。,当然,这不是我们需要的视频,这只是一个广告,我们想要的视频只有在广告完成后才能出现。

  

  

  广告结束后,网页会发出新的Get请求,如下图

  

  我们得到这个地址后,在浏览器中输入这个地址,点击确认,就会出现如下图所示的下载确认对话框。此内容是我们的视频。

  

  仍然存在的问题

  因为现在很多视频网站都是将视频分割后再传输,我们很难一次性拿到整个视频。

  

  上图中的3个地址分别为4.8M、4.7M、4.2M。GET请求地址分别为

  http://118.228.16.129/youku/67772D78CD74283B7CBF2C6864/0300021002568424716BBD05CF07DDA143076B-9FD8-FB88-D356-425002CB5AD5.flv?nk=58899470594_24473544133&ns=10028160_25014080&special=true

http://118.228.16.127/youku/6775621AA923983340263A6425/0300021000568424716BBD05CF07DDA143076B-9FD8-FB88-D356-425002CB5AD5.flv?nk=411124336987_24473541371&ns=14926680_24975560&special=true

http://118.228.16.130/youku/677647C9C793182BEDD8316058/0300021001568424716BBD05CF07DDA143076B-9FD8-FB88-D356-425002CB5AD5.flv?nk=85562168554_24473541640&ns=13330170_24443390&special=true

  上面的网址不一样。但是,每个地址的加载直到上一个视频播放到最后才会加载。我仍然无法找到解决此问题的方法。

  以编程方式拦截视频 URL

  有了想法,我们就可以开始编程了。为了拦截网页加载时发送的HTTP请求,我想到了两种方法:

  通过代理服务器通过网卡抓包

  这里我首先通过代理服务器拦截HTTP请求。

  我根据这个页面的介绍使用了proxy_server。如何用Python制作代理服务器这篇文章文章说的很清楚,可惜里面有一个小错误,稍微修改一下就可以正常运行了。我把proxy_server的代码放在了我的github上。

  跑

  运行proxy_server.py,将浏览器的代理设置为proxy_server.py监控的地址和端口。得到以下结果。

  我以网易公开课的视频为例,因为网易公开课的视频没有分成很多段再传输。

  

  

  未解决的问题是你无法获得网站的完整视频,将视频分成像优酷这样的片段。代理服务器的转发速度很慢。

  因为代理服务器转发的方式很慢,所以接下来打算再次使用网卡抓包的方式来实现。我的代理服务器很简单。它甚至没有拦截响应头的功能。通过分析请求头和响应头,我觉得可能会有一些发现。这就是我接下来要做的。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线