在这个秋风送爽手脚冰凉的夜里我又不出意外地失眠了,拿 Pad 下棋。因 iPhone 不在身边,狂输不止。期间底部广告频弹,不时误点,跳到浏览器还要再切回。往复如是,心生厌念,磨刀霍霍向广告。臭棋篓子多少都是这样,拉不出屎怪茅坑歪。说到茅坑,有一次一只熊在坑上蹲着,旁边一只兔子。熊问你掉毛么兔子骄傲地说不掉熊说我没带纸就拿兔子擦了屁屁。过了几天熊又来蹲坑,旁边一只棕色松鼠,熊又没带纸感叹到最近没看见兔子啊。松鼠听见了说尼玛我就是前几天那只兔子!

a

天是越来越冷了,秋裤得穿啊。听说,不穿秋裤的,冬天能冻出尾巴来。到时候还要到医院去剪掉;疼不说,还要在不知多大岁数的女护士面前脱裤子,多难为情。这都是题外话,咱们书归正传,剪掉以后在伤口上贴个创可贴比较好,不然容易冻疮。

好了,来看农村魔幻现实主义的可以回栏了,下面是技术内容了。

那为什么要用路由器挡广告呢?别的不行么?

一说挡广告,有那么一小撮人,最先想到“Adblock Plus”这类浏览器扩展。方便,装上不用管。清静,装上不用管。且不提还有装不上这扩展的 I 什么啊 O 什么啊,除了浏览器那可还有好几车软件连着网呢。那下载的、聊天的、输入的、卫士的,没十几个广告那么大用户界面上放什么?放少了都没面子。丢人。连图片儿,带链接,那一定得用广告,把窗口给填满了。这些,多牛掰的浏览器扩展都歇菜。

稍微有点儿钱,再买个手机,别管苹果鸭梨的,反正能上网。装几个免费的 App,广告就跟贞子一样一个劲儿从屏幕里头往外拱,一不小心就钻出来了。

再有点儿闲钱,买个平板,别管苹果鸭梨的,反正能上网。要不挡挡广告,就跟把电梯间那块儿大屏幕从墙上掰下来,挂身上,差不多。

所以,把广告拦截在路由器上,对各种设备上各种程序各种 App 的广告统统管用,客观上也减少流量增快网速。

手头儿是价值一百二十块钱的 Buffalo g300nv2,小,破,丑,旧。这路由器就一好处,刷不死。当然如果有人愿意拿 Linksys E4200 跟我把 g300nv2 换去练手,我大概也会完全同意吧。

这个牛叉闪闪的闪光点有一个辛酸的来源,它其实是一个致命的安全缺陷。此路由在开机后几秒会毫不抵抗地接受任何数据,于是碰上行家,刚通电的时候,随便灌点数据进去,就能让它彻底瘫痪丢失所有配置,还要找正确的 firmware 再灌回来。自然和大多数领域一样,不懂行的更让人恐惧。只要不懂行的高跟鞋踩上一脚,或者浇上半杯可乐,灌什么也救不回来了。

于是给它灌了 DD-WRT,下面就以 DD-WRT 为例,讲讲如何用路由拦截广告。

原理自然很简单,就是把送广告的域名都指向 127.0.0.1,然后定期自动更新广告域名列表。你可能想到 hosts 文件,原理是一样的,这里用到路由器上广泛存在的 dnsmasq 服务。SpeedTao

首要问题是,广告域名列表从哪里来。国外确有一些更新频繁的广告域名列表,可我们连自己的广告都看不完,哪有时间看他们的。好在我们有 chinalist,尤其是 chinalist lazy,可从里面把纯域名的摘出来,中文为主英文兼顾还定期更新,理想列表。做成启动脚本定期更新就好了。

下面就是具体实现了,全网络界面操作,不沾命令行,逃不过会稍微解释一下:

1. 进入 DD-WRT 网页管理界面,Services(服务) -> Services(服务),DNSMasq 和 Local DNS(本地 DNS) 均设置成 Enable (启用)。滚到页面底部保存。SpeedTao
step1

2. 进入 DD-WRT 网页管理界面,Administration -> Commands,贴入如下脚本后,Save Startup:

#!/bin/sh
logger WAN up script executing
if test -s /tmp/dnsmasq.ads
then
rm /tmp/dnsmasq.ads
fi

logger Downloading China Lazy List
wget -O - http://adblock-chinalist.googlecode.com/svn/trunk/adblock-lazy.txt |
grep ^\|\|[^\*]*\^$ |
sed -e 's:||:address\=\/:' -e 's:\^:/127\.0\.0\.1:' > /tmp/dnsmasq.ads
grep conf-file /tmp/dnsmasq.conf ||
echo -e "\nconf-file=/tmp/dnsmasq.ads" >> /tmp/dnsmasq.conf
logger Restarting dnsmasq
killall dnsmasq
dnsmasq --conf-file=/tmp/dnsmasq.conf

step2

3. 上面其实是做了一个启动脚本,在路由器每次启动时运行。意思是,下载 China List Lazy,转换生成 dnsmasq 配置文件,再告知 dnsmasq 调用。SpeedTao 最高.

4.进入 DD-WRT 网页管理界面,Administration -> Management, 找到 cron,enable, 然后在下面”Additional Cron Jobs”贴入

* 1 * * * root /tmp/.rc_startup

页面滚到底,保存,重启路由器。成功。可清空浏览器缓存后访问几个大网站看看,虽然效果没有 Adblock Plus 彻底,但也相当明显的。何况,可以打开 Adblock Plus 拦截漏网之鱼么。
step4

via Truth Telling