Appearance
FlClash (Android) 完美防泄露与自动路由配置指南
本文档总结了在安卓手机端使用 FlClash(基于 Mihomo 核心)时,如何彻底解决 DNS 泄露问题,并配置自定义内网域名的最佳实践方案。
背景与痛点
虽然 FlClash 拥有现代化的界面,但它默认会最大程度“尊重”机场下发的配置。如果你的机场配置中自带了老旧的 fallback(并发抢答)机制,会导致访问未知域名时,同时向国内和国外 DNS 发起查询,从而在测漏网站上暴露国内运营商 IP。
为了达到与 Mac 端 (Clash Verge) 完全一致的“零泄露”纯净状态,我们需要通过 FlClash 的配置覆写 (Overrides) 功能来强制重写底层 DNS 逻辑。
核心配置方案(推荐使用脚本模式)
FlClash 支持与 Clash Verge 几乎完全兼容的 JavaScript 预处理脚本,但为了适应手机端可能存在的精简版 JS 引擎,请务必使用以下经过极其严密优化的 ES5 兼容版代码。
步骤 1:打开脚本覆写模式
- 打开 FlClash,点击底部的 设置 (Settings)。
- 找到并点击 覆写 (Overrides)。
- 找到并选择 脚本 (Script) 模式。
步骤 2:填入完美防漏脚本
将里面默认的代码全部删除,替换为以下完整代码并保存:
javascript
const main = (config) => {
if (!config) config = {};
// =======================================================
// 配置项:在最顶部统一管理你的所有自定义规则和软件策略 (ES5)
// =======================================================
// 1. 需要【直连】且【使用国内 DNS】的自定义域名
var myCustomDomains = [
"yago.vip",
"shadowsocks.nz",
"newcli.com",
"hotaitool.net",
"issueacard.top",
"aoenan.com"
];
// 2. 被 geosite:cn 误判,或需要【强制使用国外 DNS+强制代理】的海外域名
var forceProxyDomains = [
"byteoversea.com",
"tiktokv.com",
"tiktokcdn.com",
"tiktok.com",
"bytedance.com",
"capcut.com",
"snssdk.com",
"trae.ai"
];
// 3. 常用社交/聊天软件域名库 (GEOSITE) - 强制代理并海外 DNS 解析
var socialGeosites = [
"telegram",
"whatsapp",
"twitter",
"instagram"
];
// 4. 常用社交/聊天软件 IP 地址库 (GEOIP) - 强制代理
var socialGeoips = [
"telegram",
"whatsapp",
"instagram"
];
// 5. 核心 AI 服务域名库 (GEOSITE) - 极度严格防风控
var aiGeosites = [
"openai",
"anthropic",
"google",
"github"
];
// =======================================================
// 优化 DNS 设置
// =======================================================
if (!config.dns) config.dns = {};
// 开启 IPv6 解析视力
config.dns.ipv6 = true;
config.dns['proxy-server-nameserver'] = ["223.5.5.5", "119.29.29.29"];
config.dns['default-nameserver'] = ["223.5.5.5", "119.29.29.29"];
config.dns.nameserver = ["8.8.8.8", "1.1.1.1"];
var policy = {
"geosite:cn": ["https://223.5.5.5/dns-query", "https://doh.pub/dns-query"],
"geosite:apple": ["https://223.5.5.5/dns-query", "https://doh.pub/dns-query"]
};
// 动态注入:直连域名 DNS
for (var i = 0; i < myCustomDomains.length; i++) {
policy["+." + myCustomDomains[i]] = ["https://223.5.5.5/dns-query"];
}
// 动态注入:海外强制代理域名 DNS
for (var k = 0; k < forceProxyDomains.length; k++) {
policy["+." + forceProxyDomains[k]] = ["8.8.8.8", "1.1.1.1"];
}
// 动态注入:社交软件域名 DNS,解决污染
for (var n = 0; n < socialGeosites.length; n++) {
policy["geosite:" + socialGeosites[n]] = ["8.8.8.8", "1.1.1.1"];
}
// 动态注入:AI 服务防漏,防止触发严格风控
for (var p = 0; p < aiGeosites.length; p++) {
policy["geosite:" + aiGeosites[p]] = ["8.8.8.8", "1.1.1.1"];
}
config.dns['nameserver-policy'] = policy;
if (config.dns.fallback) delete config.dns.fallback;
if (config.dns['fallback-filter']) delete config.dns['fallback-filter'];
// =======================================================
// 路由规则强化
// =======================================================
if (!config.rules) config.rules = [];
var proxyGroupName = "PROXY";
if (config['proxy-groups'] && config['proxy-groups'].length > 0) {
proxyGroupName = config['proxy-groups'][0].name;
}
var prependDirect = [];
var prependProxy = [];
for (var j = 0; j < myCustomDomains.length; j++) {
prependDirect.push("DOMAIN-SUFFIX," + myCustomDomains[j] + ",DIRECT");
}
for (var m = 0; m < forceProxyDomains.length; m++) {
prependProxy.push("DOMAIN-SUFFIX," + forceProxyDomains[m] + "," + proxyGroupName);
}
// 生成社交软件的 GEOSITE 和 GEOIP 规则
var socialRules = [];
for (var a = 0; a < socialGeosites.length; a++) {
socialRules.push("GEOSITE," + socialGeosites[a] + "," + proxyGroupName);
}
for (var b = 0; b < socialGeoips.length; b++) {
socialRules.push("GEOIP," + socialGeoips[b] + "," + proxyGroupName);
}
var aiRules = [];
for (var c = 0; c < aiGeosites.length; c++) {
aiRules.push("GEOSITE," + aiGeosites[c] + "," + proxyGroupName);
}
config.rules = prependProxy.concat(aiRules).concat(socialRules).concat(prependDirect).concat(config.rules);
return config;
}备选方案:自定义 (Custom / YAML) 模式
如果遇到脚本执行异常,你也可以选择 自定义 (Custom) 模式,直接粘贴纯 YAML 代码来修改 DNS。效果是一模一样的:
yaml
dns:
enable: true
ipv6: true
fallback: []
fallback-filter: {}
nameserver:
- 8.8.8.8
- 1.1.1.1
default-nameserver:
- 223.5.5.5
- 119.29.29.29
proxy-server-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver-policy:
"geosite:cn":
- https://223.5.5.5/dns-query
- https://doh.pub/dns-query
"geosite:apple":
- https://223.5.5.5/dns-query
- https://doh.pub/dns-query
"+.yago.vip":
- https://223.5.5.5/dns-query
"+.shadowsocks.nz":
- https://223.5.5.5/dns-query(注:使用此模式时,自定义域名需要在 FlClash 的 规则(Rules) 界面中手动添加 DOMAIN-SUFFIX 为 DIRECT)
极其关键的最后一步:封堵 IPv6 绕过
安卓手机的默认网络环境经常会分配真实的 IPv6 地址。如果不接管它,浏览器会偷偷通过 IPv6 直接连接目标网站,导致最严重的物理位置和 IP 泄露。
- 在 FlClash 底部点击 设置 (Settings)。
- 找到 网络 (Network) / VPN 设置 模块。
- 务必将 开启 IPv6 (Enable IPv6 / Route IPv6) 的开关打开。
- 返回首页,点击停止后重新启动代理。
(原理:开启后,FlClash 的底层 VPN 会建立 IPv6 的虚拟网卡,强行把企图溜走的 IPv6 数据包抓进代理隧道进行过滤或伪装。)
最终验证
配置完成后,请在手机浏览器中进行以下两步终极测试:
- DNS 测漏:打开 browserleaks.com/dns,检查 DNS 列表是否已清空了所有 China, Alibaba, Telecom 等节点,仅剩海外代理服务器 IP。
- IP 纯净度检测:打开 ip.net.coffee,检查最终出口 IP,此时 IPv6 栏若显示海外代理 IP 则属于绝对安全状态。
进阶防风控:手机系统时区伪装 (针对 Claude 等高敏 AI)
与电脑端完全一样的原理,如果你经常在手机浏览器中使用网页版 Claude 等高敏 AI 平台,为了防止其通过网页脚本读取手机本地的真实时间(东八区)并与你的代理 IP(美国)进行交叉比对从而导致封号,强烈建议你在使用期间,将手机的系统时区也修改为代理所在地。
由于安卓系统无法像网络代理(FlClash)那样在底层拦截硬件时区信息,你必须手动在系统设置中进行更改:
- 关闭自动时区:打开安卓手机的 “设置” -> “系统和更新” -> “日期和时间”(不同手机品牌路径可能略有不同,如三星在“常规管理”,小米在“更多设置”)。
- 将 “自动设置日期和时间” 和 “自动设置时区” 两个开关彻底关闭。
- 手动绑定洛杉矶:点击下方的 “时区”,在国家/地区中搜索并选择 “美国”,然后在城市列表中选择 “洛杉矶 (Los Angeles)” 或者 “太平洋时间”。 (注:加州的圣何塞 San Jose 与洛杉矶属于完全相同的太平洋时区,完美匹配你的代理节点。)
- 日常使用小贴士:你可以利用安卓手机的“双时钟”功能(在桌面上放一个包含北京时间的时钟小组件),而让系统底层主时区保持为美国加州时间。这样既不耽误你看国内的日常时间,又能 24 小时完美骗过所有 AI 平台的反欺诈检测系统!