1. 程式人生 > >瀏覽器外掛遮蔽優酷廣告的原理

瀏覽器外掛遮蔽優酷廣告的原理

    優酷等視訊網站不付錢就可以看,而且能夠生存主要靠廣告收入,而國內的視訊網站在做廣告時對使用者的體驗也做的不好,強制必須看廣告,導致使用者非常地不舒服,有黑客行俠仗義解求萬民於水火,就產生了廣告遮蔽外掛。有矛就有盾,廣告遮蔽外掛與視訊網站的暗戰一直都沒有停歇,我現在就為你揭示這一過程。

    最早的視訊廣告與一般廣告相同,在視訊開始播放前進行播放,只要用Chrome載入最普通的AdBlock外掛即可進行遮蔽,而後來視訊網站進行了升級,將廣告嵌入到視訊播放器中,即使AdBlock遮蔽了廣告,依然是黑屏,30秒廣告時間仍然是無法過去的。但是這種方法很快也遭到了黑客的破解,就是破解播放器。

我們看到了這個羅胖,那麼瀏覽器後臺是怎麼實現的呢?

後臺實現原理:


廣告是內嵌在loader.swf中的,因此要遮蔽廣告,必須必須對loader.swf進行修改。是的,黑客們正是這樣做的。

具體請見:

大致流程是:

1.對loader.swf進行解壓縮,因為swf是支援zip壓縮的。

2.用反編譯工具將swf進行反編譯得到原始碼,但是這個原始碼不能編譯。

3.通過閱讀這個原始碼找到關鍵點。

4.對swf進行二進位制修改。

5.將破解後的swf進行壓縮。

OpenGG.Clean.Player 作者 魯夫的愛    (一代風流人物,開幫派之先河)
[email protected]  作者cinhoo    (退隱江湖之風清揚,時不時出來指點2招)


播放器/程式碼 作者 15536900    (仍在兢兢業業鎮守邊關的郭大俠)

播放器      作者  catcat520      (有獨到之祕的小龍女,喵喵控的應該是妹妹吧 )

這些大俠都是可以指引你進步的階梯。

廣告遮蔽外掛的工作原理

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呼叫。

<cross-domain-policy>
<allow-access-from domain="*.youku.com"/>
<allow-access-from domain="*.ykimg.com"/>
<allow-access-from domain="*.tudou.com"/>
<allow-access-from domain="*.tudouui.com"/>
<allow-access-from domain="*.tdimg.com"/>
</cross-domain-policy>

優酷視訊地址解析方法

這個部分較複雜,但網上已經有較多的文章、程式碼對此進行介紹。請自行檢視。

很多流行的網站都是這樣子破解的,如:

反思

    加密與破解從來都是一對矛盾,一方升級催著另一方進行升級。優酷播放器開發組的人也是為了防破解傷透了腦筋。

    既然優酷是必須要給普通人看的,那他就必須承受黑客對它的破解。視訊的地址最終是會被人獲取到的,廣告遮蔽外掛是用破解後的播放器將廣告去除,而bilibili所做的是直接自己開發了一個播放器加入了自己的彈幕功能,然後通過解析優酷的視訊真實地址進行視訊播放。可以說以上的這2種方式都會對優酷網站產生較大的影響(廣告沒人看了,流量跑了)那麼要防止這些事情的出現優酷要怎麼做呢?

1.防止播放器被破解,用程式碼混淆等技術。但是iqiyi的播放器程式碼是經過混淆過的,不還是被破解了麼?只是給破解的人添了許多麻煩,需要花更多時間而已。

2.防止瀏覽器使用外掛。這個問題是無法解決的,WWW的流行就在於客戶端隨意,IE、Chrome、UC、Opera,甚至是一個獨立開發的符合特殊需要的怪異的瀏覽器,瀏覽器外掛只不過是把這種開發簡單化了。網站把自己的安全性基於客戶端本身就是一種不可靠的方式。

3.對視訊地址加密。這個……如上所述,早都被破解了,網上到處都是如何解密,定期換一換也就是讓黑客再破解一次而已。

4.對視訊進行加密。這個大概就是涉及到DRM的一些技術了,目前還沒有見到採用這種技術的大網站,對於優酷這種公開的網站,DRM估計是用不上。迅雷看看的視訊是採用了一點加密技術的,格式為.xv,一般播放器是打不開的,但是不同樣被破解了,見http://xv.mofavideo.com/ 。在矛與盾的鬥爭中,雖然加密總是佔有一定的主動權,但破解看起來總是要更容易一些,因為加密需要對全部的情況做好防護,就像修一道高高的圍牆,而破解只要找出這道圍牆上的一個漏洞就可以了。

我不得不為優酷的同志們捏把汗,反破解的道路任重而道遠。你們辛苦了。可是你們有沒有考慮過別的方式呢?比如改進廣告的顯示方式,讓使用者不那麼太討厭廣告?向國外的同行借鑑? 矛與盾的戰鬥一直在繼續…………