OpenClash代理时,谷歌应用商店无法下载应用问题的排查解决记录
注意!!!此方法由于 OpenClash 的 bug 不再适用!!
问题:
之前在使用 OpenClash 进行代理时,发现手机谷歌应用商店浏览正常,但是无法下载应用,一直转圈加载,切换过 OpenClash 模式,fakeIP,redir host 均出现该问题,但是当手机开启代理软件时,就一切正常。
前期尝试:
既然手机使用 CFA 就正常,那么极有可能是 DNS 出现问题,鉴于我使用了 ADGuard Home 作为 dnsmasq 的上游服务器进行广告拦截,首先进行了误判断排查,但是从进入到下载均没发现误判,同样的,关闭 ADGuard Home、开启 OpenClash 的 DNS 劫持、使用全局模式均不奏效。
后面转战 Google,逛了 V2EX、Clash 仓库 Issue,发现有人有类似问题,他们确定是 DNS 问题,于是更换 DNS,从 8.8.8.8,1.1.1.1,233.5.5.5 等等都试过,还是老样子,陷入窘境。直道今天,每次更新应用,都要打开 CFA。期间虽然尝试过几次,都以失败告终。
解决方法:
今天进行常规更新 ACL4SSR 规则,升级 OpenClah 时,发现多了一个控制面板:
于是手贱把这几个按钮都点了一遍,结果在切换 Dashboard 到官方版时,一直失败
突然想起,不会是和前段时间 Clash 删库有关吧,赶忙去 Issue 看看
果不其然,真有和我一样的,评论区也是有人给出了控制面板的磁盘路径,只需要找到官方版的打包文件替换下就行。
咳咳扯远了,不过这也是我今天解决问题的”导火索”,本着来都来了的原则,我就打算在 OpenClash 的 Issue 里看看有没有人和我一样谷歌商店无法下载的,嘿你别说还真有
原来 20 年就有了,这两个 Issue 都将问题指向了代理规则,我使用的是 ACL4SSR_Online_Full 这个规则,加上一些自定义的上游规则,可谓是深得我心,所以我不是很想更换规则,至于提到的什么洞主规则,似乎也已经挂了
于是我就寄希望于 ACL4SSR 仓库,看看他有没有相关 Issue,又是果不其然
今年 5 月份有人提过,并且给出了解决方法,而且已经标记为 completed,我赶紧去看我的规则和拦截记录:
可惜,这个域名似乎已经是正常代理了,不过这倒给我提供了一个很好的思路,既然 CFA 可以,那我就打日志,看看他都请求了哪些域名,我再逐一排查不就行了,说干就干!
排查记录:
手机使用数据网络,CFA 开启全域模式,开启 Logcat,进入谷歌应用商店,下载应用,停止 log,传到 PC 上方便查看:
这就是请求的所有域名,其中就包括 Issue 中提到的xn--ngstr-lra8j.com
,这更加让我相信,我离胜利不远了,接下来,就一个个试呗,在我的规则中,这些域名都被命中了,但是在 ADGuard Home 的解析记录中,有一个域名从来没有解析记录!也就是说,他根本没有走到过核心!他就是services.googleapis.cn
。
看到 cn,我猛然一惊,让我想到我之前的一个发现:我自己解析在同一个服务器上的两个域名,一个是.xyz,一个是.cn,前者会被代理,后者却从来没有被代理过,目标地址一直都直接是我的服务器 IP,之前发现却没有研究过,没想到这与困扰我两年的问题有”异曲同工之妙”。那么,这到底是为什么呢,为什么 cn 域名会不走核心即使我开启了全局呢?
好好想想:
cn 为啥这么特殊?
因为 cn 代表大陆域名。
大陆域名又咋了?
噢!我想起来了,说到大陆,我之前不就捣鼓过 V2rayN 和 OpenClah 里的 GeoIP 与大陆白名单吗!
那这个白名单是什么时候,又是干嘛用的呢,隐约间,我好像又想起一个功能:
绕过大陆 IP,自从第一次装完系统开了他,就没再管过,后面重装好几次也都默认开启,看这功能的名字,很明显就是罪魁祸首啊!果断在黑名单中加services.googleapis.cn
和googleapis.cn
,重启,再试。
OHHHHHH!!成了,为了确认,我在备用机上也试了一下,完美下载,就连 Google App 加载不出的问题也一并解决,真的是解决困扰了我快两年的一大问题,这下在家终于不用再开 CFA 进谷歌商店啦!
附上此功能具体流程:
[Feature] 能否在 Wiki 加上 "实验性:绕过中国大陆 IP" 具体实现的流程图 · Issue #3467 · vernesong/OpenClash · GitHub