使用北京联通 ADSL 宽带上网,会弹出广告,效果大致如下图。

北京联通弹出广告

  • 北京联通的做法是把原始页面替换成它的广告页面,原始页面放到一个 iframe 里面(实际上是搞了两层 iframe)。图中鼠标选中的地方上面的那个 iframe 里才是真正原始页面的内容。
  • 图中鼠标选中的那块是实际的广告内容区域。(本来广告是在右下角的,并且持续若干秒之后会隐藏。我为了让它显示出来把控制位置的 CSS 删了,所以现在在正中了。)
  • 联通广告一般会有些标记,比如“京城时讯”、“联通新农村”什么的。
  • 几个月前就遇到了弹出广告,当时我打电话投诉,广告暂时消失了。我以为投诉管用,还写了一篇博文记录。可是没过多久,广告又回来了。

网上流传很多办法,但是大部分都不适用于联通这种广告:

  • 向 10010、工信部投诉:已经不可行。从法理上已经无法投诉。
    • 现在联通沃家庭套餐的合同里有一行小字,说联通可以推送优惠信息。并没有无广告的套餐可选。虽然也许可以辩称这是霸王条款什么的(签协议的时候,联通员工并没有向我指出会投放广告),但是难度很大,毕竟写在合同里了。
  • 网上很多文章说改 DNS,但对北京联通这种广告不管用。我用的是 Google 的 DNS 8.8.8.8,仍然有广告。北京联通这不是 DNS 劫持,而是直接把人家网站的页面内容劫持了,加了个 iframe。
  • 有人说不要用联通自动的客户端拨号,还有说用路由器就不会有广告,也不管用。我从来没用过联通的客户端,一直是路由器,仍然有广告。
  • 有人说浏览器有阻止弹窗的功能,不适用,这个不是弹窗。
  • 想通过各种技术屏蔽手段屏蔽广告服务器是不行的。
    • 技术手段包括但不限于:
      • 改 hosts 文件屏蔽域名:不适用,联通这里用的是 IP,没有域名。
      • 防火墙(比如 Windows 7 自带就有)。
      • 在 360、卡巴斯基之类软件的反广告或黑名单里面设置。
      • 在路由器上屏蔽该域名或 IP。
      • IE —— 工具 —— Intelnet选项 —— 安全 —— 受限站点 —— 站点。(我居然没有在 Chrome 里找到这个功能。)
    • 如果屏蔽他的广告网址,就会导致正常的网址也打不开!效果如下图:屏蔽广告网址则正常的网址也打不开了
      • 北京联通的做法是劫持用户正常访问的网页,替换成自己的广告页面,然后将原网页放到一个iframe里。如果屏蔽他的广告网址,会返回一个打不开的页面,而不是你本来想访问的网页。
      • 原理:本来你想访问网站 A,联通给你劫持了,给你返回的内容是它的广告网站 B,在网站 B 上,联通放了个 iframe,里面是网站 A 的内容。如果你屏蔽了网站 B,那么你会看到一个提示“网站 B 已被屏蔽”的页面,它不会给你跳转到网站 A。
      • 联通就相当于是做了个跳转的页面,你不访问那个跳转页面,就无法访问到实际的页面。
  • 直接屏蔽广告内容,用Adblock 之类有广告屏蔽功能的浏览器扩展,也不行。
    • 我这里 AdBlock Plus 的 Chrome 版甚至连隐藏广告的作用都没有。Firefox 版也许会有用吧,但 Chrome 版无效。
    • 这样隐藏广告,即使能让你看不见广告,但是页面还是被联通劫持着在一个 iframe 里面,导致页面上很多功能无法正常使用,比如点了链接但地址栏里的网址还是不变,很多链接点不开,等等。而且,这样有很严重的安全问题。

可能有效的办法:

  • 据说用加密代理有可能有效,比如全程 VPN、HTTPS、SOCKS 代理。
    • 因为内容是加密的,ISP 甚至不知道你访问的 URL,所以无法插广告。
    • 这个我没试。不过访问 HTTPS 网站好像确实没遇到过弹出广告。
    • 即使有效,全局翻墙速度太慢,不是理想解决方案。
  • 有人写了一个 Chrome 扩展来屏蔽电信广告,但不知对北京联通这种广告是否有效(各地的运营商强插广告的手段不太一样……)
  • Firefox 版的 FoxyProxy 有一个匹配页面内容的功能,如果页面有特定内容,可以重载页面并使用代理打开。但是 Chrome 版似乎无此功能。而且我们也不需要使用代理打开。

目前所知最有效的应对手段:

  • 思路:
    • 从技术上彻底屏蔽似乎是不可能的,只能尽量让其不影响上网体验,让使用者尽量感觉不到广告。
    • 联通这个广告的特性:随机出现(暂时没找到出现规律),一般刷新一次或几次就能刷出来正常页面。
    • 根据这个特性,应对办法就是对页面内容进行匹配,如果含有广告内容,则自动刷新页面。
    • 如果刷新速度足够快,就能让使用者来不及看到广告。这可能是目前对用户影响最小的办法了。
    • 如果网速偏慢,还是有可能看到广告,不过至少省了手动刷新的那一下操作。
  • 办法:
    • G+ 上的高人姬有酒提供了一个简单易行的 Chrome 扩展制作方案,非常感谢!详情请见这个帖子,以及这个帖子里姬有酒的两条回复。
    • 实在不会自己动手做扩展的同学们也不用急,我根据姬有酒的方案做了一个 Chrome 扩展,目前感觉还行,我准备先试用几天,如果没问题,会放出让大家下载 :)

对于站长和独立博客的博主来说,还可以用一些技术手段禁止别的站点在 iframe 里引用自己。

  • 也就是说让别人上你的网站,不会遇到运营商插入的 iframe 广告。否则用户很可能以为是你在放广告,你就成替联通背黑锅的了。
  • 既然是站长应该懂点技术吧,具体方法请自行搜索“禁止 iframe 嵌套”之类的关键词 :)

此文是针对北京联通的,各地运营商插入广告的方式各不相同,那些不适用于北京联通的办法,说不定适用于你的运营商。我相信此文对于广告解决办法的总结算是比较全面的,所以,如果你遇到弹出广告,可以把我上面说的办法挨个试过来,估计总有一条能适合你 :)