瀏覽器外掛遮蔽優酷廣告的原理
優酷等視訊網站不付錢就可以看,而且能夠生存主要靠廣告收入,而國內的視訊網站在做廣告時對使用者的體驗也做的不好,強制必須看廣告,導致使用者非常地不舒服,有黑客行俠仗義解求萬民於水火,就產生了廣告遮蔽外掛。有矛就有盾,廣告遮蔽外掛與視訊網站的暗戰一直都沒有停歇,我現在就為你揭示這一過程。
最早的視訊廣告與一般廣告相同,在視訊開始播放前進行播放,只要用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/ 。在矛與盾的鬥爭中,雖然加密總是佔有一定的主動權,但破解看起來總是要更容易一些,因為加密需要對全部的情況做好防護,就像修一道高高的圍牆,而破解只要找出這道圍牆上的一個漏洞就可以了。
我不得不為優酷的同志們捏把汗,反破解的道路任重而道遠。你們辛苦了。可是你們有沒有考慮過別的方式呢?比如改進廣告的顯示方式,讓使用者不那麼太討厭廣告?向國外的同行借鑑? 矛與盾的戰鬥一直在繼續…………