Google Chrome上常年启用着一到两个插件,专职屏蔽各类广告,但手机Chrome却无法享受这个好处。可是既然有现成的流量过滤工具(ET具备这样的能力),我为何不给它添加一个内置的广告屏蔽器呢?

基本的思路很简单,大致有三个方向:

  1. 屏蔽广告服务器的域名(从DNS解析入手)
  2. 屏蔽广告服务器的IP(从DNS解析或建立管道入手)
  3. 屏蔽特定的数据内容(从流量转发入手)

说来简单,可稍加验证,就意识到三条都是死路。

屏蔽域名和IP

屏蔽域名恐怕是最简单不过的做法了。为了业务流程的清晰,代码模块的解耦,广告业务通常会和核心业务分离开发、部署和运营。这似乎给了我可乘之机,广告业务有可能使用独立域名、至少也该有独立IP。手动排查也好,软件嗅探也好,只要我找出了目标主机,阻断其连接还不容易?

但其实没那么简单,很快我意识到自己是个土鳖。已经2018年,CDN的部署已是常态,不同业务们虽然大概率使用着独立服务器(当然可能由虚拟化平台提供支撑),却统一使用CDN对外提供服务接口。使用CDN即意味着IP的统一,既然连IP都统一了,那么域名还有独立的必要么?至于不同业务,通过URL或者参数即可控制。

屏蔽数据内容

事情其实已经结束了,但为了好看,我总得找个理由凑齐思路三连。屏蔽特定的数据内容,这个思路其实最早否定的。HTTPS的普及使超过50%的网站流量都使用SSL进行加密,第三方很难对其进行篡改(修改)——不论是木马植入还是广告屏蔽。

如果强行要这么做,恐怕也只能签发一条私有的证书,然后由用户手动安装到计算机。然而这显然不是我想要的体验。

果然,长城办不到的事,我更办不到。

有啥用

其实屏蔽域名和IP的做法也并非完全不可行,只是效果有限。我尝试使用neoHosts项目提供的hosts文件,结合ET新近加入的hosts功能进行了简单试验。对于部分调用第三方广告服务的小站,它还是有用的(对腾讯视频的广告也有部分作用,这挺令我意外)。不过由于HTML代码框架的关系,常常会在原本是广告的位置留下一个空白的方格或者干脆在方格内显示400 Bad Request,这多见于使用iframe之类的内嵌网页广告。和网页浏览器插件基于内容的筛选效果,完全没得比。

既然无法取代浏览器的广告屏蔽插件,却能被广告屏蔽插件完美取代,它存在的意义又有多少呢?仅仅是对移动端访问小站体验的有限改进吗?

启用hosts前

before

启用hosts后

after

2 对 “一次屏蔽广告的失败尝试”的想法;

发表评论

电子邮件地址不会被公开。 必填项已用*标注