iOS不越狱屏蔽各种软件开屏广告(授人以渔)

关于App开屏广告,安卓上有各种自动点击跳过广告的软件,比如自动跳过、李跳跳等,但iOS由于系统原因,此类App基本别想了(越狱除外),但除了越狱,我们也可以通过屏蔽App的广告地址来实现屏蔽App广告

原理简单说明

各种App开屏广告经常会变,所以广告图片必定是通过网络下载的,我们只需要屏蔽它这个下载地址,让它下载失败就达到了屏蔽广告的效果;当然如果广告图片是App内置的就不适用于此方法了

一、安装网络调试软件和抓包软件
  • 网络调试软件:用于屏蔽广告网址,本文以Shadowrocket为例,当然也可以使用同类型的比如Quantumult/Quantumult X/Loon/Surge等软件,原理都是一样的
    温馨提示:Shadowrocket这个软件国区未上架,美区售价$2.99,没有美区Apple Id和美区支付方式的用户可通过本站杂货铺直接购买账号下载:https://buy.aneeo.com
  • 抓包软件:用于抓取App广告网址,本文使用Thor Http,当然也可以使用同类型免费的Stream
二、使用抓包软件找到App广告地址

本教程以网易云音乐App为例,先看一遍广告(注意,某些App开屏有多个,可以重复关闭打开App查看广告是什么),如下图就是滴滴货运的广告

注意:因为已经打开过网易云音乐App,广告图片已经下载到你的手机里了,无法抓取下载地址,需要清除App图片缓存或卸载从新安装;其他App同理

开启Thor Http的抓包开关,然后启动网易云音乐app,出现开屏广告进入App后,即可返回Thor Http关闭抓包开关;然后打开抓包记录,找到刚才看到的广告图片,点进去复制网址;如下图

这里只需要复制广告网址里的域名,不需要整个图片的地址,比如这里就只需要

iadmusicmat.music.126.net
三、将抓到的广告域名填入Shadowrocket

打开Shadowrocket配置 – 点击默认文档(default.conf) – 编辑配置 – 新增规则,类型选择DOMAIN,选项选择REJECT,域名就粘贴刚才抓取到的广告域名,这里就是iadmusicmat.music.126.net

添加后点保存,然后返回Shadowrocket首页,全局路由选择配置,最后打开App的开关(无需节点,有节点并不影响),这个时候已经屏蔽网易云音乐的开屏广告了;如果打开还有广告,那就是之前下载到手机了,清除下App的图片缓存即可;其他App也可以使用相同的方法屏蔽开屏广告,甚至不仅限于开屏广告,只要你能找到广告网址~

关于规则类型说明
  • DOMAIN-SUFFIX
    基于域名后缀判断
    比如输入 baidu.com 就可以过滤zhidao.baidu.com,pan.baidu.com等 baidu.com 后缀的网站
  • DOMAIN-KEYWORD
    基于关键词的判断
    比如输入baidu,就可以过滤 baidu.com,baidu.cn,baidu.net等含有 baidu 字眼的网站
  • DOMAIN
    基于域名的判断
    比如输入 www.baidu.com 就可以过滤 www.baidu.com/*的网站
  • IP-CIDR
    判断是否为局域网
  • GEOIP
    判断服务器地址
  • FINAL
    剩余的网站
额外说明

如果使用一段时间后,广告又出来了,要么是你在没有开启Shadowrocket开关的状态下打开了App,导致广告图片下载到本地了;或者是App广告图片更换了地址,从新抓包添加到规则即可

顺便分享个Github上的广告规则文件:

10 Comments

  1. 请问我使用抓包工具之后发现像zhihu,neteasecloudmusic之类的app的拉取广告的域名并没有改变,使用小火箭也确认过将这些域名设置为reject,依然会出现开屏广告是怎么回事呢?清空缓存后重试依然是这样。期待您的回复~

    test005
    1. 某些App的广告域名现在很鸡贼,比如网易云现在广告域名就是好几个,如果第一个域名无法访问就会自动从第二个域名获取广告

      小孩分对错の大人只蹭蹭不进去
        1. 规则的话GitHub上有很多,这篇文章只是简单的说下原理,大概了解下那些大佬的规则是怎么来的,看多了你就是大佬了

          小孩分对错の大人只蹭蹭不进去

发表回复

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