您好,登錄后才能下訂單哦!
ASP.NET中彈出窗口常見(jiàn)的封殺方式有哪些,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
ASP.NET中彈出窗口常見(jiàn)的封殺方式有哪些呢
ASP.NET中彈出窗口封殺之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)題名稱的智能過(guò)濾技術(shù),它根據(jù)彈出窗口的標(biāo)題是否含有關(guān)于廣告的關(guān)鍵字進(jìn)行封殺,這為提高過(guò)濾效果作出了很好的探索。
ASP.NET中彈出窗口封殺之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)。
ASP.NET中彈出窗口封殺之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ò)濾不很***,但原理基本如此。
ASP.NET中彈出窗口常見(jiàn)的封殺方式就向你介紹到這里,希望這樣的介紹對(duì)你有所幫助。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。