上一貼很火熱:秋天新作品:秋式廣告殺手,每年幫大伙多活7-8天!,大伙表示整套的意願很強烈,當然對軟件的原理興趣更有傾向性。
本節介紹以下方面內容:
1:軟件的廣告攔截原理。
2:新版本V1.1的介紹。
3:廣告殺手組織介紹。
4:下節預告。
一:軟件的廣告攔截原理
1:秋式廣告殺手軟件的組能及通訊:
2:軟件運行及攔截流程及原理
你從秋式廣告殺手官網下載完軟件,並解壓后正常開啟運行:
1:軟件會監聽81端口(因為80端口被占用是不能監聽處理的)
2:軟件會提示並寫入Hosts文件,大體內容如下:
關於Hosts設置到服務器不能設置為127.0.0.1的原因及原理:
如果設置在本機,那么你就得強占用戶的IIS,創建默認網站,來實現攔截;
如果網站已存在,你還得修改相關參數,總不能直接就刪除站點再創建吧;
如果用戶沒裝IIS,還得安裝(考慮到不同系統,這樣的想法明顯是不可取的);
所以設置回本機,光這條就取消了,當然還有其它很多理由不應該裝在本機。
Hosts必須指向服務器,也有重重問題需要分析與思考:
用服務器負責所有的請求轉發(實現攔截功能)?
有以下幾個原因會取消這種想法:
1:服務器壓力重,還沒錢買好的服務器。
2:如果由服務器轉發,那么只要服務器被屏蔽方屏蔽訪問,那么也就失效了。
所以,請求轉發,必須回到客戶端,所以客戶端必須內置代理服務器。
關於代理服務器的實現,具體可以看我文章Http代理工具實現的開源文章。
服務器只負責端口跳轉,光是端口跳轉,還會有問題,思考與對策划需要繼續:
1:單純端口跳轉(到客戶端后,還是解析到服務器,這不來來回回死循環了)
這在開發時是沒想到的(因為開發時,服務器和監聽都是在本機,所以跳轉端口后就轉代理服務器去了),以為成功了,上傳到服務器才發覺悲劇的一點。
2:81端口的監聽,只能處理解析到127.0.0.1本機的請求,所以我想出了個域名映射,所以你看到hosts是雙對成型的。
跳轉到映射域名后,映射域名是指向127.0.0.1的,加上端口是81,就會進入內置的代理服務器,實現中轉請求了。
實現攔截原理,就是這么個過程了,至於如何屏蔽,暫時保下密,免的提前被發現反破解了!
二:秋式廣告殺手V1.1版本介紹
雖然離上個版本只過了4天,但這個版本改進了不少功能:
1:服務器是否連通的檢測機制改變:
原來是軟件啟動時,采用System.Net.NetworkInformation.Ping 來測試服務器是否連通。
上面原理說了,需要服務器進行跳轉,所以必須保證用戶能連上服務器才能正常使用。
通常用cmd執行ping時,是連發4條,而用Ping類時,只發送了一次,導致首次超時,未被識別為成功,因此軟件沒處於開啟狀態,導致一些未知的人為問題。
為此,本次還是回改服務器網站情況,通過請求服務器網站,返回“ok”標識來確認連通。
2:軟件更注重細節:
1:首次使用時,默認顯示界面,而不縮小,並提示用戶可能發生的行為。
2:避免用戶從解壓文件里直接運行。
3:增加配置文件變更時,瀏覽器未生效時需要重啟瀏覽器的提示。
4:取消百度的硬性選擇問題,允許取消。
3:增加update.exe升級程序:
V1.0並未有升級功能,而這個版本,新增加了升級程序用於升級功能。
為了這個升級程序,體積小,不產生額外的dll,我費時超過8小時,硬是從200K大小的ICSharpCode.SharpZipLib.Zip中,提取出單純解壓的代碼,由於關聯性太多,壓到52K,盡力了,同時修正了語言時區錯誤解壓中文亂碼的問題。
這個update.exe程序,沒混淆沒加密,有興起可以去反編繹一下。
4:增加以下視頻的屏蔽:
如下圖:
考慮到視頻網站太多,自己又精力有限,不可能維護所有的網站。
因此,我思考良久,如何更讓更多的網友參與分享,所以有了以下界面:
5:增加更多分享規則:
在主界面視頻欄里點“更多”,如來界面,如下圖:
你可以自定義添加規則,如果需要(勾選)分享,需要(為了避免亂發廣告,需要申請一個Code,才能提交)
6:新版本下載地址:http://www.cyqdata.com/download/article-detail-54271
三:廣告殺手組織
個人能維護的規則有限,需要大伙共同參與, 弄了個廣告殺手組織QQ群:227664757,歡迎有心人加入組織,群只有上限100人,潛水者勿進,定時清理;
進群可獲取分享Code,用戶提交規則分享;
同時會私下交流切磋如何屏蔽廣告及視頻, 讓規則更豐富些。
四:下節預告:
附加的51cto博客大賽投票:( 2012年11月27日結束,天天都可以投)
感謝路過的朋友也順手扔一票:http://blog.51cto.com/contest2012/2127378