解决软路由环境中 Safari 无法通过 Cloudflare 人机验证
Fanx / 2023-11-19 / Linux / 阅读量 5305

原因

在 iOS 15 和 macOS Ventura 中,新增了一个功能:限制 IP 地址跟踪
而这个功能虽然在中国大陆无法完整使用,但是能使用部分功能(对网站跟踪器隐藏 IP 地址) 这就使得在非 Cloudflare 的第三方网站中的人机验证器 (域名:challenges.cloudflare.com) 被识别为跟踪器,而在 OpenClash 中,为了防止 YouTube 等使用 QUIC 导致速度不佳,通常会 禁用 QUIC,而恰好 iCloud 专用代理使用了 QUIC

iCloud 专用代理使用 QUIC,这是一种基于 UDP 的全新标准传输协议。专用代理中的 QUIC 连接需要使用端口 443 和 TLS 1.3 建立,因此请确保你的网络和服务器已准备好处理此类连接。

一个完美耦合的 bug 就这样出现了:

访问带有 Cloudflare 人机验证的网站 --> Safari 判断 challenges.cloudflare.com 为跟踪器,使用 iCloud Private Relay 连接此域名 --> OpenClash 配置的防火墙规则禁止 QUIC 连接

导致人机验证卡在 “正在验证” 状态:
正在验证

解决

方法一

在 无线局域网 设置中,关闭 限制 IP 地址跟踪 功能

  • 缺点: 无法使用自带邮件 APP 和 Safari 对于跟踪器和广告收集器的隐藏 IP 地址功能

限制 IP 地址跟踪

方法二

关闭 Safari 浏览器的 隐藏 IP 地址 功能

  • 缺点: 无法对于其它跟踪器和广告收集器隐藏 IP 地址

隐藏 IP 地址

方法三

在 dnsmasq 中添加以下域名到 IPSet china_ip_routechina_ip6_route 中:

mask.icloud.com
mask-h2.icloud.com
mask.apple-dns.net
域名来源: 为 iCloud 专用代理准备网络或网页服务器 - Apple Developer

原理:
让 iCloud Private Relay 的流量不经过内核直连,这样能让它们正常使用 QUIC 连接,也不会影响到禁用其它网站的 QUIC

OpenClash 的 本地 IPv4 绕过地址 设置中只能添加 IP/IP-CIDR,不支持域名,所以要通过 dnsmasq 设置

在 OpenWrt 的 网络 --> DHCP/DNS --> 中的 IP 集合 中,添加域名:

mask.icloud.com
mask-h2.icloud.com
mask.apple-dns.net

china_ip_route
china_ip6_route

IP 集 - 1
IP 集 - 2

1 + 1 =
7 评论
    33Safari 18Mac OS X
    3月6日 回复

    以前使用大佬这种方法成功通过验证了,但是后来因发现我的规则不太好,会导致dns泄漏,就根据这个项目中的规则模版Custom_OpenClash_Rules重新配置了一次
    他这个规则需要配合开启绕过中国大陆功能使用,然而开启绕过中国大陆后safari再次无法通过验证了
    Chrome不受影响还是能通过测试,关闭绕过中国大陆选项后Safari也能通过测试,所以应该是绕过中国大陆这个功能导致的问题
    请问大佬有没有什么解决方案呢?

      FanxChrome 133Mac OS X
      3月6日 回复

      @33 第一个问题:我这个通过人机验证的方法就是要搭配绕过中国大陆使用的,域名绕过是没问题的,可能你要检查一下是不是使用了 Fake-IP 或者路由器是否有 DNS 缓存;第二个问题:“限制 IP 地址追踪” 功能是 Safari 独占,所以 Chrome 不受影响

        33Safari 18Mac OS X
        3月7日 回复

        @Fanx 是的,我确实是使用的 Fake-IP 混合模式,不是 Redir-Host 模式
        那意思是,只要使用 Fake-IP 模式,再打开“绕过中国大陆”功能的话就会导致这个问题出现吗?
        那有没有什么解决方法呢?还是说只能关闭“限制 IP 地址追踪”功能或者关闭“隐藏 IP 地址”功能吗?

          FanxSafari 18iPhone
          5天前 回复

          @33 这我就不知道了,我更喜欢在路由器上使用redir-host模式

    LiamSafari 17Mac OS X
    2024年03月31日 回复

    作者真的太厉害了!非常感谢你解决了困扰我好久的问题,我一直以为是我oc还是mosdns设置的问题,来来回回折腾,后来想到是不是苹果的问题(因为在Chrome里完全没事),但是又不想关掉那些隐私功能。直到看了你另外一篇关于openwrt折腾dns的文章,然后到你Linux分栏里转转,看到第一篇就是关于Safari验证问题的文章,简直是救了我?。太激动了,说了好多废话?不多说了,再次表示感谢!?

    raigoSafari 17iPhone
    2024年02月23日 回复

    求问dhcp/dns下没有ip集合这个tab是什么原因,我是自编译的lede,是不是缺少包

      FanxSafari 17Mac OS X
      2024年03月02日 回复

      @raigo 不知道,我用的是 immortalwrt,lede 的 luci 版本太旧了,我没有使用