如果屏蔽頁面上的廣告?對于普通用戶來說,使用AdBlock插件是最佳選擇(針對火狐瀏覽器和谷歌瀏覽器用戶,不知道IE瀏覽器容易如何處理這樣的問題)。
?
沒有人喜歡廣告,但在互聯網上,絕大多數網站的主要來源只有廣告,如果沒有廣告收入,這些網站基本上都會倒閉。
?
為了在投放放過和不騷擾用戶之間取得平衡,很多站長是很有克制在頁面上投放少量的廣告。但站長們的這些良苦用心往往會被一些流氓寬帶商的惡意行為給 粉碎了。幾乎所有的寬帶商(聯通寬帶、電信寬帶、移動寬帶、長城寬帶、方正寬帶等)都會在用戶使用它們的寬帶服務瀏覽網頁時,在這些網頁的頁面上強行嵌入 自己的廣告服務。
?
以大家熟知的36kr網站為例子來說明這個問題。我使用的是方正寬帶,當用戶訪問36kr網站的頁面時,正常情況下,36kr網站的頁面是沒有放置廣告的,更不會在頁面的右下角彈出廣告。但當使用方正寬帶訪問36kr網站時,你就會發現頁面右下角有廣告彈出。
?
?
我們使用火狐瀏覽器的代碼調試窗口,發現,在頁面的尾部無端多出來很多
iframe
和嵌入有廣告代碼的
div
。很顯然,這些代碼并不是36kr放置的。它是寬帶商捕捉用戶瀏覽的網頁,擅自非法的這些頁面上添加自己的廣告服務代碼。這些代碼能給寬帶商帶來一筆額外的收入。
?
?
對于站長來說,這些廣告很討厭,用戶會認為這些都是網站站長投放的。站長背了黑鍋,而且沒得到任何好處,更重要的,影響了在用戶心中的形象,流失了用戶。
?
站長應該維權,但站長是弱勢群體,維權路上很難成功。那么,我們只能自己想辦法,我們可以通過技術的手段,在頁面代碼里做一些改動,阻攔或屏蔽這些寬帶商非法嵌入的代碼。
?
我發現,寬帶商非法嵌入的廣告代碼通常是兩種形式,一種是在頁面尾部加入數個
iframe
,
iframe
里的內容是寬帶商承攬的廣告;另外一種形式是直接嵌入
div
,
div
里嵌入一些html代碼和js,最終呈現的內容還是寬帶商承攬的廣告。
?
但無論是
iframe
還是
div
,這些HTML廣告代碼都有相同的特征。
?
首先說說
iframe
形式,這些
iframe
在頁面文檔中的位置一定都是
body
元素的直接子元素,用CSS 選擇器可以這樣表示:
body > iframe{....}
?
?
以我個人的經驗,一般正常的頁面里很少有使用
iframe
的,即使有,也很少有將
iframe
直接放到
body
元素下的。所以,對于這些流氓寬帶商非法嵌入的
iframe
,我們可以通過下面的CSS進行屏蔽:
body > iframe{ opacity:0; display:none; }
?
?
?
把這段代碼放入頁面里,這非法嵌入的廣告
iframe
,雖然存在,但完全看不見。
?
對于第二種情況,也就是
div
形式的廣告,我發現這些
div
通常會放置在頁面的最后,也就是頁面里正常HTML元素的最后一個的后面。如果我們的頁面里最后一個元素是:
<div id='last-div'></div>
?
?
?
,則就要其后非法插入的廣告代碼的CSS選擇可以是這樣:
div#last-div ~ div {。。。。}
?
?
?
,只要能捕捉目標,我們就能消滅它們,隱藏這些非法入侵者的代碼很簡單,跟上面消滅
iframe
的方式一樣:
div#last-div ~ div { display: none; opacity:0; }
?
?
?
將上面這這種代碼一起放到頁面里的CSS文件里,黑心的寬帶商非法插入的廣告就無法顯示,我只是小范圍的測試了一下,效果很好,但很有可能還有更多沒有考慮到的情況。如果你知道這種方法有遺漏的地方,或者有更好的方法,請告訴我,在下面留言,或發郵件給我,謝謝。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
