iOS屏蔽开屏广告
国内的互联网公司真的是脸都不要了,搞出个摇一摇开屏广告,差点中招,想回退到老版本又太麻烦,实在忍不了了,最后决定抓包,然后用Shadowrocket的规则屏蔽掉这些恶心的广告
此方法的原理是使用Shadowrocket的REJECT
规则,对APP的请求的广告域名进行拦截并返回404状态码,APP下载不到广告,自然也就不会显示了。
提示:此方法需要
- 一个美区/英区的Apple ID以及相应支付方式,因为好用的代理软件在国区已经全被下架了
- 一个可靠的机场/VPS,因为需要一直开启VPN
- 重新安装需要屏蔽广告的APP
导入规则
这里我以Shadowrocket为例,Quantumult X、Surge等代理软件也都可以使用,配置方法大同小异。
首先将Shadowrocket的全局路由
设置为配置
然后到配置
中,添加一份规则,规则在GitHub上很多,我用的是下面这个规则集中的黑名单+去广告
安装抓包APP
虽然上面导入的规则已经能够屏蔽掉部分APP的开屏广告了,但是有一些APP的广告下载链接经常变化,规则不一定包含,就需要抓包这些链接,然后加入到Shadowrocket的规则里。
抓包APP国区推荐比较多的是Stream,但是英区并没有上架,这里我用的是Storm Sniffer
添加VPN
首次启动时先打开上面的开启抓包
开关,然后会提示添加VPN,允许并输入手机的密码
开启HTTPS支持
下一步是开启HTTPS支持,需要下载并启用证书
下载证书
安装证书
下载完成后打开设置,会多出一个已下载描述文件
,点击右上角的安装
,然后输入密码,然后会弹出是否信任证书的警告,继续点击右上角的安装
即可
启用证书
打开设置
-通用
-关于本机
,拉到最下面,有一个证书信任设置
,开启Strom Sniffer的证书,证书和APP名字差了一丢丢,会弹出警告,点击继续
即可(抓完包建议回来关掉它,卸磨杀驴🐶🐶)。然后回到Storm Sniffer界面,如果显示的像最右边的图片一样,说明HTTPS支持已经开启成功。
抓包
抓包之前需要先卸载并重装要抓包的APP,因为广告文件已经在APP缓存里了,而APP里面所谓的清除缓存功能并不会清除广告的缓存。在启动的时候APP会直接调用已经缓存下来的广告,而不会向广告下载服务器发出请求,不发出请求我们就抓不到广告服务器的域名,自然也不能屏蔽它们了。
首先打开Storm Sniffer的开启抓包
开关,然后启动要抓包的APP,第一次启动可能不会弹出广告,多清理后台试几次,广告加载出来后就可以回到Storm Sniffer,关掉开启抓包
开关,然后在列表中寻找长得像广告的域名,图片形式的广告比较好找,Storm Sniffer会显示图片预览,视频形式的就得慢慢找了。找到后在Storm Sniffer中点击请求的HOST,选择复制Value就可以复制域名了
添加规则
打开Shadowrocket的配置
,打开刚才导入的规则,点击右上角的加号添加新的规则,类型一般不用改,策略设置为REJECT
,然后粘贴刚才抓到的域名并保存。
然后开启Shadowrocket的代理,再次重装刚才抓完的APP,清除掉广告的缓存,就可以正常使用了。
规则类型
规则类型
一些常用规则类型说明
- DOMAIN:域名匹配
- DOMAIN-SUFFIX:域名后缀匹配
- DOMAIN-KEYWORD:域名关键字匹配
- IP-CIDR:IP 段匹配
- GEOIP:GEOIP 数据库(国家代码)匹配
- DST-PORT:目标端口匹配
- FINAL:剩余网站
碎碎念
国内的APP为了投放广告可谓费尽心机,APP的广告域名可能会更换,虽然频率不高,但是每次更换我们都需要重装APP并重新抓包,比较麻烦。不过一旦屏蔽完成,就再也不用忍受每次5秒的开屏广告,APP启动都是秒开,而且也不用担心开屏广告跳出来某些晦气玩意儿的大脸,还是很值的。另外附上微博国际版的域名屏蔽列表
微博国际版域名屏蔽列表
- sdk.e.qq.com
- mazu.m.qq.com
- adimg.uve.weibo.com
- tqt.weibo.cn
- miaozhen.com
- sdkapp.uve.weibo.com
- sdkmonitor.biz.weibo.com
- h.trace.qq.com
- cgi.connect.qq.com
- gdtimg.com
- umengcloud.com
- adstrategy.biz.weibo.com
- 切记不要在关闭代理的情况下启动这个APP!不然广告又会被缓存下来,就得再重装一次了。
- 建议禁止这些APP的后台刷新,iOS的消息推送机制不需要它们后台刷新,禁止也不会耽误消息。毕竟代理APP不一定稳定,万一代理掉了这些APP就可能在后台缓存广告了