iOS 在这方面还是比安卓方便些,目前看上 iOS 的就两点:通知推送,以及各种 rewrite 和 mitm 的 App。

Android 从 7.0 开始,系统不再信任用户 CA 证书,而有些 App 为了防止抓包可能会采用固定证书的手段,所以安卓屏蔽广告效果并没有那么好。但是安卓的可玩性让它可以采取多种方式,比如修改 hosts、使用 Blocker 禁用组件、LSPosed 模块 AdClose 等。

但是难免会有一些牛皮藓一样的广告去不掉,通过域名屏蔽又可能误伤,本文通过对 雪球股票-炒股开户 12.40.1 (320) 的演示提供一种去广告的思路,不保证对新版本或其他应用有效。我看到很多人觉得雪球的广告太多,新版又强制绑定手机号,所以用了 APKCombo 下载的旧版本,更多历史版本可以去豌豆荚找。因为不涉及应用修改,所以理论上很安全。

寻找广告缓存

需使用可获取 root 权限的文件管理器,本次使用的是 MT 管理器

可以凭命名或者文件搜索来找,比如雪球的开屏广告在 /data/data/com.xueqiu.android/cache/image/

或者这种信息流广告,可以采用搜索文件内关键字的方法来定位:

广告展式 搜索关键字

使用同名文件替换

找到广告文件夹以后可以试试用同名文件替换,再看看有没有什么副作用,比如使用 image 替换 image/,替换完其他图片可以正常加载。

这里需要使用 Linux chattr 命令用于改变文件属性。

在该文件目录下输入 chattr +i image 保护替换的 image 文件不被修改或删除(不会被当缓存清理掉),如果只是修改权限可能会被清理。

1
2
3
su
cd /data/data/com.xueqiu.android/cache/
chattr +i image

修改完属性以后的文件再清除应用数据也会被保留。

同理信息流广告的文件夹也替换成文件,文件则可以直接用空白文件替代,因为不在 cache/ 下不会被当缓存清理,所以我没有改文件属性,只修改了文件权限。经过尝试替换 ./shared_prefs/ 文件夹是没问题的,替换完所有无影响的文件以后我删除了其他文件让其重新生成,再次打开就没有广告了。

就此应用来说,三项足矣:

  • /data/data/com.xueqiu.android/cache/image/
  • /data/data/com.xueqiu.android/shared_prefs/
  • /data/data/com.xueqiu.android/files/mmkv/sp_file_module_snowball7918158062
  • (文件后面的一串数字不同设备不一样)
搜寻结果 修改权限

其他方式补充

去广告 hosts & 规则整理:ADhosts

Chrome 扩展: uBlock Origin 以及推荐的过滤规则 ⭐: filterlists

AdGuard DNS:

默认家庭保护
94.140.14.1494.140.14.15
94.140.15.1594.140.15.16
(DOH) https://dns.adguard.com/dns-query(DOH) https://dns-family.adguard.com/dns-query
(DOT) dns.adguard.com(DOT) dns-family.adguard.com

Moment

Image Source : ASK