国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

非IE瀏覽器對彈窗的過濾討論

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-27 15:55:48

  廣告窗口的泛濫使得不少網(wǎng)民不堪鋪天蓋地的廣告騷擾紛紛放棄標(biāo)準(zhǔn)IE瀏覽器而使用諸如GoSurf、MyIE2、NetCapter這樣的使用IE內(nèi)核支持多頁面并能自動屏蔽廣告的軟件。據(jù)說在即將發(fā)布的IE6 sp2中微軟也將加入封殺廣告窗口功能。

  這對大多數(shù)網(wǎng)民當(dāng)然是件好事,可對于程序員而言,我們使用彈出窗口的方式與一般廣告并無本質(zhì)的不同,這樣的窗口也會被彈出窗口管理器不分青紅皂白的封殺,其結(jié)果當(dāng)然是我們不愿看到的。有沒有一個標(biāo)準(zhǔn)的方式能讓窗口正常的彈出呢?這就要求我們了解瀏覽器封殺廣告的原理。通常的廣告封殺器使用以下三種方式進行廣告過濾:

  (1)基于窗口標(biāo)題的封殺方式

  這種封殺方式的原理是定時檢查所有的IE窗口標(biāo)題,然后于已經(jīng)有的列表(由程序維護的一個數(shù)組列表)來比較,如果有相同的,我們就關(guān)閉這個窗口。顯然,這種方式有著諸多缺陷,它封殺了所有的彈出的窗口,管得太死,在程序真正使用的很少。不過,依據(jù)它進行的變形方式倒使用得相當(dāng)?shù)钠毡。那就是,基于窗口?biāo)題名稱的智能過濾技術(shù),它根據(jù)彈出窗口的標(biāo)題是否含有關(guān)于廣告的關(guān)鍵字進行封殺,這為提高過濾效果作出了很好的探索。

  (2)基于窗口類和位置的封殺方式

  經(jīng)過分析發(fā)現(xiàn)正常瀏覽窗口的類名是IEFRAME和CabinetWClass,而廣告窗口的類名是CabinetWClass。進一步分析發(fā)現(xiàn):廣告窗口的WorkerA類和Shell DocObject View類的rect.top的值是相同的,正常IE窗口的WorkerA類和Shell DocObject View類的rect.top的值是不相同的。根據(jù)以上兩點就可以書寫廣告殺手程序了。 事實上,我對此程序的通用性持懷疑態(tài)度。因為筆者用Spy++分析發(fā)現(xiàn),在Windows2000( 筆者使用的操作系統(tǒng))中,IE窗口的類都為IEFrame。同時,由于Win2000是一個基于Unicode代碼的操作系統(tǒng),所以沒有WorkerA類,而以WorkerW類取而代之。同時,也不存在rect.top不相同的情況,由于筆者沒有WindowsXP操作系統(tǒng),所以不能針對WindowsXP作進一步的試驗。

  (3)基于IE COM組件的封殺方式

  以上兩種方式都是把IE窗口當(dāng)作一個普通的Windows窗口對待,進行判斷的。事實上,IE是一個典型的基于COM組件的瀏覽器,所有的基于IE內(nèi)核的瀏覽器都是包裝shdocvw.dll文件,然后書寫相應(yīng)的BHO代碼。只有這樣才能做到真正的控制IE瀏覽器,而不是方法一、二這樣的隔靴搔癢。

  還有一種基于IE內(nèi)核的彈出窗口封殺方法。它可以在彈出窗口打開之前加以攔截。其原理是:每當(dāng)IE打開一個新的窗口時候都會觸發(fā)NewWindow事件,執(zhí)行OnNewWindow2([out] IDispatch*, [out] BOOL *bCancel)方法。重載此方法,判斷打開新窗口事件是否發(fā)生在瀏覽頁面已經(jīng)下載完畢之后。如果是,說明是正常的彈出窗口,反之加以攔截。

  由于Gosurf這樣的瀏覽器本身就重載了Shocvm.dll組件,所以使用第三種方法就自然成了順理成章的事。然而在使用過程中有時也會發(fā)現(xiàn),廣告過濾不很完美,但原理基本如此。

上一篇:怎樣才算掌握J(rèn)ava編程?
下一篇:J2ME學(xué)習(xí)需要的一些Java知識

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!