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

非IE瀏覽器對(duì)彈窗的過(guò)濾討論

來(lái)源:北大青鳥(niǎo)飛迅校區(qū)|發(fā)布時(shí)間:2013-04-27 15:55:48

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

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

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

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

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

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

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

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

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

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

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

熱門(mén)話(huà)題

招生熱線(xiàn): 4008-0731-86 / 0731-82186801

學(xué)校地址: 長(zhǎng)沙市天心區(qū)團(tuán)結(jié)路6號(hào)

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

湘ICP備14017520號(hào)-3

關(guān)注我們
在線(xiàn)咨詢(xún)
嘿,我來(lái)幫您!