浏览器插件屏蔽优酷广告的原理

    优酷等视频网站不付钱就可以看,而且能够生存主要靠广告收入,而国内的视频网站在做广告时对用户的体验也做的不好,强制必须看广告,导致用户非常地不舒服,有黑客行侠仗义解求万民于水火,就产生了广告屏蔽插件。有矛就有盾,广告屏蔽插件与视频网站的暗战一直都没有停歇,我现在就为你揭示这一过程。

    最早的视频广告与一般广告相同,在视频开始播放前进行播放,只要用Chrome加载最普通的AdBlock插件即可进行屏蔽,而后来视频网站进行了升级,将广告嵌入到视频播放器中,即使AdBlock屏蔽了广告,依然是黑屏,30秒广告时间仍然是无法过去的。但是这种方法很快也遭到了黑客的破解,就是破解播放器。

以http://v.youku.com/v_show/id_XODE1NDYyMTIw.html为例:

我们看到了这个罗胖,那么浏览器后台是怎么实现的呢?

浏览器插件屏蔽优酷广告的原理_第1张图片

后台实现原理:
浏览器加载http://static.youku.com/v1.0.0481/v/swf/loader.swf,这是一个播放器,用于播放真正的视频,视频是flv格式,视频的地址是http://118.228.16.40/youku/6572F3B092E3382DB72A6E642D/03000201005452FB5C502702EDC305457AD3A8-7929-415C-BBF2-BBB4C1A6CC27.flv?&start=0加密的,在loader.swf中进行解密(这个后面再讲到)。

广告是内嵌在loader.swf中的,因此要屏蔽广告,必须必须对loader.swf进行修改。是的,黑客们正是这样做的。

具体请见:

OpenGG/OpenGG.Clean.Player-client ,此网址已失效,该作者(@鲁夫的爱)大概确实是承受了巨大的压力。到https://github.com/rasso1/youkuantiads找一点蛛丝马迹吧。

具体的工具我已上传到github.com上,具体地址:https://github.com/alongL/CleanPlayer。是OpenGG以前的源代码,请大家自行学习借鉴。

大致流程是:

1.对loader.swf进行解压缩,因为swf是支持zip压缩的。

2.用反编译工具将swf进行反编译得到源代码,但是这个源代码不能编译。

3.通过阅读这个源代码找到关键点。

4.对swf进行二进制修改。

5.将破解后的swf进行压缩。

更多详细的修改技术请移步:http://bbs.kafan.cn/thread-1762766-1-1.html

OpenGG.Clean.Player 作者 鲁夫的爱    (一代风流人物,开帮派之先河)
[email protected]  作者cinhoo    (退隐江湖之风清扬,时不时出来指点2招)
播放器/代码 作者 15536900    (仍在兢兢业业镇守边关的郭大侠)

播放器      作者  catcat520      (有独到之秘的小龙女,喵喵控的应该是妹妹吧 )

这些大侠都是可以指引你进步的阶梯。

广告屏蔽插件的工作原理
插件的工作就是将网页上http://static.youku.com/v1.0.0481/v/swf/loader.swf这个优酷自己的播放器替换成破解过的播放器。请看html代码中的替换代码,哪个插件我就不说了,大家都看得出来。

rules: {
            'youku_loader': {
                'find': /^http:\/\/static\.youku\.com\/.*(loader|player_.*)(_taobao)?\.swf/,
                'replace': 'http://swf.adtchrome.com/loader.swf'
            },
            'youku_out': {
                'find': /^http:\/\/player\.youku\.com\/player\.php\/.*sid\/(.*)/,
                'replace': 'http://swf.adtchrome.com/loader.swf?VideoIDS=$1'
            },
            'pps_pps': {
                'find': /^http:\/\/www\.iqiyi\.com\/player\/cupid\/common\/pps_flvplay_s\.swf/,
                'replace': 'http://swf.adtchrome.com/pps_20140420.swf'
            },
            'iqiyi_1': {
                'find': /^http:\/\/www\.iqiyi\.com\/player\/cupid\/common\/.+\.swf$/,
                'replace': 'http://swf.adtchrome.com/iqiyi_20140624.swf'
            },
            'iqiyi_2': {
                'find': /^http:\/\/www\.iqiyi\.com\/common\/flashplayer\/\d+\/.+\.swf$/,
                'replace': 'http://swf.adtchrome.com/iqiyi_20140624.swf'
            },
            'iqiyi_duba': {
                'find': /^http:\/\/dispatcher\.video\.qiyi\.com\/disp\/shareplayer\.swf/,
                'replace': 'http://swf.adtchrome.com/iqiyi_20140624.swf'
            },
            'ku6': {
                'find': /^http:\/\/player\.ku6cdn\.com\/default\/.*\/\d+\/(v|player|loader)\.swf/,
                'replace': 'http://swf.adtchrome.com/ku6_20140420.swf'
            },
            'ku6_topic': {
                'find': /^http:\/\/player\.ku6\.com\/inside\/(.*)\/v\.swf/,
                'replace': 'http://swf.adtchrome.com/ku6_20140420.swf?vid=$1'
            },
            'sohu': {
                'find': /^http:\/\/tv\.sohu\.com\/upload\/swf(\/p2p)?\/\d+\/Main\.swf/,
                'replace': 'http://swf.adtchrome.com/sohu_20140917.swf'
            },
            'sohu_share': {
                'find': /^http:\/\/share\.vrs\.sohu\.com\/my\/v\.swf&/,
                'replace': 'http://swf.adtchrome.com/sohu_20140917.swf?'
            },
            'sohu_sogou' : {
                'find': /^http:\/\/share\.vrs\.sohu\.com\/(\d+)\/v\.swf/,
                'replace': 'http://swf.adtchrome.com/sohu_20140917.swf?vid=$1'
            },
            /*'letv': {
                'find': /^http:\/\/player\.letvcdn\.com\/p\/.*\/newplayer\/LetvPlayer\.swf/,
                'replace': 'http://swf.adtchrome.com/letv_20140716.swf'
            },
            'letv_topic': {
                'find': /^http:\/\/player\.hz\.letv\.com\/hzplayer\.swf\/v_list=zhuanti/,
                'replace': 'http://swf.adtchrome.com/letv_20140716_topic.swf'
            },*/
            'letv_duowan': {
                'find': /^http:\/\/assets\.dwstatic\.com\/video\/vpp\.swf/,
                'replace': 'http://swf.adtchrome.com/letv_duowan_20140811.swf'
            }
        },

要注意的问题
1.flash的crossdomain.xml、跨swf调用。

参见http://v.youku.com/crossdomain.xml 定义的是很严格的,只对相关自己的站起作用。







优酷视频地址解析方法
这个部分较复杂,但网上已经有较多的文章、代码对此进行介绍。请自行查看。

给一个参考链接: http://blog.csdn.net/feige2008/article/details/8198434

很多流行的网站都是这样子破解的,如:

http://www.bilibili.com/

http://www.flvcd.com/  

反思
    加密与破解从来都是一对矛盾,一方升级催着另一方进行升级。优酷播放器开发组的人也是为了防破解伤透了脑筋。

    既然优酷是必须要给普通人看的,那他就必须承受黑客对它的破解。视频的地址最终是会被人获取到的,广告屏蔽插件是用破解后的播放器将广告去除,而bilibili所做的是直接自己开发了一个播放器加入了自己的弹幕功能,然后通过解析优酷的视频真实地址进行视频播放。可以说以上的这2种方式都会对优酷网站产生较大的影响(广告没人看了,流量跑了)那么要防止这些事情的出现优酷要怎么做呢?

1.防止播放器被破解,用代码混淆等技术。但是iqiyi的播放器代码是经过混淆过的,不还是被破解了么?只是给破解的人添了许多麻烦,需要花更多时间而已。

2.防止浏览器使用插件。这个问题是无法解决的,WWW的流行就在于客户端随意,IE、Chrome、UC、Opera,甚至是一个独立开发的符合特殊需要的怪异的浏览器,浏览器插件只不过是把这种开发简单化了。网站把自己的安全性基于客户端本身就是一种不可靠的方式。

3.对视频地址加密。这个……如上所述,早都被破解了,网上到处都是如何解密,定期换一换也就是让黑客再破解一次而已。

4.对视频进行加密。这个大概就是涉及到DRM的一些技术了,目前还没有见到采用这种技术的大网站,对于优酷这种公开的网站,DRM估计是用不上。迅雷看看的视频是采用了一点加密技术的,格式为.xv,一般播放器是打不开的,但是不同样被破解了,见http://xv.mofavideo.com/ 。在矛与盾的斗争中,虽然加密总是占有一定的主动权,但破解看起来总是要更容易一些,因为加密需要对全部的情况做好防护,就像修一道高高的围墙,而破解只要找出这道围墙上的一个漏洞就可以了。

我不得不为优酷的同志们捏把汗,反破解的道路任重而道远。你们辛苦了。可是你们有没有考虑过别的方式呢?比如改进广告的显示方式,让用户不那么太讨厌广告?向国外的同行借鉴? 矛与盾的战斗一直在继续…………
--------------------- 
作者:阿龙哥哥 
来源:CSDN 
原文:https://blog.csdn.net/v6543210/article/details/40990197 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(web前端)