11年的老文章,穩重那個插件讓我爽了好久,不事後來就買會員了。代碼我已經遺失了,不過無所謂,思路仍是明確的,我後來在 Chrome 上測試過,同樣能用。html
==== 正文 ====web
需求:優酷最近搞了一個廣告防屏蔽,致使修改host的方法不能用了。咱們須要一個新方法來繞過這個防屏蔽機制。
基本思想:新版的優酷flv player下載不到廣告會罷工30秒,既然不能屏蔽廣告,那咱們就替換廣告文件,用一個假廣告文件讓flv player播放。
實現:
首先抓一下包,或者用Fiddle2攔截請求,會發現優酷的廣告是個flv文件,而土豆和新浪的廣告是f4v文件或者swf文件(不經常使用的就先不關心了)。咱們找到廣告url的特色,就能夠實現替換。
具體替換方式,有兩種選擇(驅動之類的bt方法我就不說了):chrome
咱們先針對之後總瀏覽器實驗一下功能能不能實現,筆者針對的是IE。
IE的插件是個臭名昭著的東西,可是對開發者而言仍是比較方便的,由於它比較「自由」,能夠無所顧忌的使用C++幹任何事兒。IE插件有三種:
瀏覽器
我用的方法就是寫一個BHO嵌入IE進程,攔截IE的Navigate事件,若是是感興趣的視頻網站就開啓Asynchronous Pluggable Protocols攔截全部http請求,找到廣告文件的請求,用假廣告文件替換。假廣告文件是個很短的flv或者swf,這樣就繞過了防屏蔽機制。
結果:
目前只是實現了基本功能,能夠攔截優酷,土豆,新浪和奇藝的視頻廣告(其餘的我不怎麼用),而且暫時不針對外鏈的視頻。暫時只支持IE,下一步用FireBreath作一個通用版。
截圖(假廣告時長兩秒):
存在的問題:
優酷的播放器能夠正常播放假廣告,可是土豆和新浪的都不能夠,接受到文件以後他們會播放失敗,以後開始正常播放視頻。我專門下載了他們本身的廣告文件做爲假廣告,仍是不行。可能他們使用了某種簽名機制,這個有待研究,好在他們沒有像優酷同樣防屏蔽,我暫時直接攔截掉了他們的廣告,如今能夠正常使用。
下載:摸我框架