手机上过滤广告的尝试

自从路由器当成交换机来用后,原来在路由器上过滤广告的做法已经不行了。pc上还好,adbyby开机自启,加上chrome的ublock,已经没有广告的烦恼了。

但是手机上不行。即使用了xposed模块,也只能去除google的广告。所以就想说把adbyby给搬到手机上用。

adbyby官方有提供armv7的二进制文件。正好可以在手机上运行。首先adb把adbyby给push到手机存储上/sdcard。然后尝试运行却始终permission denied.使用root权限chmod也无法加上可执行权限。尝试shell执行,依然是无法执行。后来发现问题是在sdcard的挂载上,挂载的时候有个noexec参数,导致挂载的目录无法执行二进制文件。解决的办法也很简单。把程序移动到/data/tmp目录下就能执行了。

第一步把程序运行起来算是解决了。接下来要把80端口的流量转发到8118上,这样才能通过adbyby来过滤广告。按照之前在路由器上的做法,用iptables设置透明代理,将网页流量转发到adbyby上.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8118

然后发现,规则并没有添加上去。原因在于android的这个iptables并不是完整的iptables,不支持这样的透明代理。想要使用的话可以另外找个完整的iptables来替换。但是android的iptables有扩展,用于管理具体应用的流量。所以不打算替换这个iptables了。采取折中的办法。

在wifi设置下手动 指定代理服务器。把127.0.0.1端口8118指定为http代理服务器。这样所有的http流量就通过adbyby进行过滤了。然而缺点也很明显。只能在wifi情况下使用,而且每次更换连接热点的时候都需要手动再设置一次

@

Show Comments