视频解析中的广告拦截技术

有一次晚上十一点,我想看个15分钟的短片放松一下就睡觉。打开视频,先是90秒贴片广告,忍着看完了。正片播了不到五分钟,又跳出来一个30秒中插广告。更离谱的是,我暂停去倒了杯水,回来发现屏幕上又多了个暂停广告。一个15分钟的短片,光广告就看了快三分钟。那天晚上我就在想,有没有什么办法能在不影响正常使用的前提下,减少广告的干扰?

后来花时间研究了一下,发现广告拦截其实是一门挺有意思的技术。说实话,它不是什么高深的黑科技,但搞懂了原理之后,确实能让观看体验好很多。

视频广告的花样比你想象的多

现在的视频广告早就不是简单的贴片了。前贴片广告(视频开始前强制播放)是最常见的,也是最烦人的。中插广告在剧情关键时刻突然跳出来,特别破坏体验。还有暂停广告、浮层广告、角标广告、片尾推荐广告……五花八门。广告时长从5秒到90秒都有,有些能跳过,有些强制看完。我之前遇到过一个平台,90秒的广告只给一个5秒跳过按钮,而且按钮小得可怜,稍微一不注意就点歪了,又被弹回广告页面,明显是故意的。

这些广告的技术实现方式也不一样。有的是通过HTTP请求单独加载的,这种最容易拦截;有的是和视频流合并在一起的,拦截难度就大多了。还有一种叫"服务器端广告插入"(SSAI),广告被直接嵌入到视频流里,播放器根本分不清哪个是广告哪个是正片,这种技术目前拦截起来非常困难。之前思否上有篇技术文章详细分析了各种视频广告的技术实现方案,对开发者来说很有参考价值。

浏览器端的拦截——原理其实很简单

其实吧,浏览器端的广告拦截,说白了就是"黑名单"机制。拦截插件(比如AdBlock、uBlock Origin)维护一个过滤规则库,浏览器加载网页时,插件对照规则库检查每一个网络请求,命中广告特征的请求就直接拦截掉。这个方案对付基于HTTP请求加载的广告效果很好——弹窗广告、横幅广告、大部分贴片广告都能干掉。

但问题是,如果广告和视频流本身合并在一起传输的,URL拦截就无能为力了。这也是为什么有些平台的广告怎么都拦不住的原因。另外,现在很多视频平台开始检测广告拦截插件,检测到了就弹出提示让你关掉拦截器,否则不让你看视频。这场攻防战一直在持续。

视频解析工具天然具备广告拦截优势

视频解析工具在广告拦截方面有个天然优势。因为解析过程本身就是直接获取视频流地址,绕过了平台的前端播放页,自然也绕过了前端播放页上的广告系统。你用解析工具看视频,大概率不会看到那些烦人的贴片广告和中插广告。这也是很多人选择解析工具的一个重要原因——不是不想付费,而是付费了还要看广告,太憋屈。

不过要我说,一棍子打死所有广告也不太好。广告是很多免费内容存在的经济基础,如果所有用户都拦截广告,平台赚不到钱,可能连免费内容都不提供了。所以我的态度是:拦截严重影响体验的广告(比如90秒强制观看的、含有低俗内容的),但对于一些15秒可跳过、内容正常的广告,偶尔看看也无妨。之前掘金上有篇讨论,讲的就是广告拦截和内容生态的平衡问题,挺发人深省的。

合理使用拦截工具的几个建议

第一,拦截工具一定要从正规渠道下载。Chrome应用商店、Firefox附加组件商店这些官方渠道最安全,别从乱七八糟的网站下载"破解版"、"绿色版",很容易被植入恶意代码。第二,只拦截严重干扰体验的广告,不要一刀切。第三,如果你真的喜欢某个平台或者某个创作者,偶尔支持一下正版会员,也算是一种良性循环。广告拦截这事,说到底是个度的问题——手段要有,但别滥用,保持一个平衡最好。