← 返回 华AI 分享小站
Anti-Ban Hardening · Public Share Edition

Claude / GPT 防封环境配置方案 · 公开分享版

一台 Windows 机器上,把 AI 产品家族的流量锁死在单一固定代理出口的完整实操记录。方法论来自「黑哥」的小白图解版指南,本页是按它落地后的实战报告——所有结论都有实测证据,包括真实掉线演练。已做脱敏处理:所有 IP、用户名、路径、订阅与节点信息均已替换为占位符。

核心原则:连不上,可以。真实 IP 直连,不行。
公开分享版 · 2026-10-14 · 已脱敏 · GPT / 其他 AI 产品同理,见第 01 节末尾的替换对照
本篇为完整长文,共 13 个章节,建议收藏后分次阅读
00

先读这一页

方法论来源(请先看原文,本页只是落地记录)
https://www.heigeai.com/claude/
「黑哥」改编的《Claude 防封指南 · 小白图解版》,原作出自「智能体先锋队」《Claude 防护方法手册 · 本机实战版 v3.0》。原文写得比本页更系统、更好懂,本页的价值在于:它已经被真机跑通,并且把踩过的坑和实测数据都留下来了。

这份东西是什么

它不是什么

没有任何"免封"保证。手册开篇就声明「以下经验也许有用,也许毫无用处」。这套方案能做的是:减少意外直连、防止配置漂移、少暴露不必要的信息。它做不到:推断平台的风控规则、承诺账号不被限制、拿某个标签(住宅 IP、信任分、时区一致)当护身符。账号结果由平台决定,路径由我们把关。

脱敏说明

本页面所有私人信息均已替换:固定出口 IP → 【你的固定出口IP】;真实公网 IP → 【你的真实公网IP】(它只在演练对照里出现,正常应该一次都不出现);用户目录 → %USERPROFILE%\;订阅名、节点名、机场名 → 占位描述。你照做时用自己机器的真实值替换即可。

01

一键复现:把提示词交给你的 AI 助手

用法很简单:① 把手册网址发给他 ② 把下面对应你情况的提示词整段复制给他 ③ 他说"开始"之前会先给你一份改动计划,你确认后再动手。提示词里已经写死了红线(不许擅自换节点、改一处验一处、做不到要如实说),所以可以放心让他跑。

⚠️ 发之前先看清:这里的「AI 助手」指的是你本机那个能跑命令的助手,不是 Claude 本人。
  • 绝对不要把下面任何一段提示词粘进 claude.ai、Claude 桌面端或任何 Claude 对话。提示词里明写了「把 Claude 流量锁到代理出口」「防封」这类内容,发过去等于把「我在规避地区限制」这句手写供词亲手交给平台——这比 IP 本身危险得多。
  • 风控判的是规避意图,不是「人在哪」。IP、时区只是弱信号,可以容忍;你打字承认在对抗检测,是强信号,基本不可挽回。
  • 顺带一提,也不要让 Claude 去抓取手册网址——被抓取的 URL 同样留在请求日志里。
  • 同理,日常对话里避开这些词:VPN、代理、节点、出口、翻墙、封号、防封、位置、你在哪、手册、演练、守卫。
  • 要验证出口干不干净,只用第三方测站(ip.net.coffee、ipinfo.io、browserleaks.com、whoer.net),它们不经过 Anthropic。
选哪个用?
  • 提示词 A —— Windows + Clash Verge Rev(mihomo 核心)用户,绝大多数人用这个。全套,含守卫与演练。
  • 提示词 B —— 不是 Windows / 不用 Clash Verge(Mac、其他客户端、命令行 mihomo 等)。
  • 提示词 C —— 只想花十分钟做最小保护,先别被咬到。
  • 提示词 D —— 配好之后的月度演练核对。

提示词 A · 全套(Windows + Clash Verge Rev)推荐

提示词 A · 全套加固 适用:Windows + Clash Verge Rev(mihomo 核心),已有一个可用的代理订阅
你是我的 Clash / mihomo 配置工程师兼安全工程师。
目标:按下面这份手册,为我的 Windows 机器把「Claude 产品家族的全部流量」锁死在一个固定代理出口上,做到一句话——
连不上,可以;真实 IP 直连,不行。

【第 0 步 · 先读手册,不要凭印象动手】
1. 先完整读取这个网址的全部正文:
   https://www.heigeai.com/claude/
   注意:它是 JS 单页应用,正文在 JS bundle 里(页HTML只是空壳)。如果直接抓只拿到几 KB 的空壳,就找出页面引用的 /assets/*.js,下载后用正则提取中文文本再读。读不到全文就不要往下走。
2. 读完先给我一份不超过 15 行的计划:你要做哪几件事、每件事会改我机器的哪个文件、哪些操作有风险、改坏了怎么退回。
3. 等我回复「开始」再动手。在收到之前,除了只读的审计之外,什么都不要改。

【硬红线(违反任何一条就停下来问我)】
- 我的代理节点和出口由我决定。你可以告诉我「你现在用的是哪个节点、出口 IP 是多少」,但绝对不要擅自切换节点、改订阅、换出口。需要换就先问我。
- 动手前先完整备份 Clash Verge 的配置目录(profiles/、verge.yaml、config.yaml 等),备份目录带日期。
- 每改一处配置,立刻验证三件事:① 代理核心还在跑 ② TUN 网卡还在 ③ 出口 IP 还是原来那个。任何一项不对,立即回滚到上一步,然后告诉我发生了什么。(我有过一次教训:改完没验证,整个代理配置失效、TUN 消失,机器裸奔了十几分钟。)
- 不要为了省事把节点名直接写进规则。必须用「专用策略组」把出口身份和节点名解耦——这样订阅更新改了节点名时,只会表现为探测失败并被明确报告,而不是整份配置崩掉。
- 不要用「装随机指纹插件」「改 WebGL 字符串」这类操作冒充防封。指纹治理的原则是保持真实稳定。

【要你做的八件事】
1. 审计:先告诉我我现在的代理栈(客户端和核心版本、TUN 开关状态、订阅结构、现有规则)、防火墙状态、浏览器、Claude 客户端、隐私开关、IPv6 状况。先看清起点再改。
2. 专用策略组:在 Clash Verge 的「Profile Enhancement → groups」里 append 一个 select 类型的组(例如叫 Claude),只放一个成员 = 我现在选定的那个固定节点。组内不要 DIRECT、不要自动回落、不要用 url-test / fallback。
   注意:不要写在订阅 merge 文件的 proxy-groups 里——merge 会按索引覆盖订阅自带的分组,可能让整个代理配置失效。
3. 围墙(TUN):确保 TUN 开启,stack=gvisor、strict-route=true、auto-route=true、DNS 劫持开启、fake-ip 开启、全局 IPv6 关闭。
4. 规则:用「Profile Enhancement → Script(JavaScript)」把规则前置到 rules 最前面,顺序是:进程规则 → 官方域名 → 关键词兜底 → 出口探测域名 → 其他服务。至少覆盖 claude.ai / claude.com / anthropic.com / claudeusercontent.com / console.anthropic.com / statsig.anthropic.com / support.claude.com / sentry.io,再加 DOMAIN-KEYWORD,claude 和 DOMAIN-KEYWORD,anthropic 做兜底。
   注意:merge 文件的 prepend-rules 是死键,GUI 不会内联它,必须写在 Script 里。
5. DNS:把这些域名的 DNS 解析也固定走同一个专用组(DoH 走代理侧),避免解析出口漂移。
6. 专用浏览器:新建一个独立资料目录的浏览器快捷方式,显式指定本地代理端口,并禁用非代理 UDP(WebRTC)。要求:代理端口死了就打不开页面,绝不回落直连。我日常用的浏览器不受影响。
7. 启动预检 + 常驻守卫:写一个预检脚本(启动 Claude 前先探测出口,不对就拒绝启动并弹窗说明原因)和一个常驻检查(用计划任务,检查 TUN / 端口 / 出口身份,异常就停掉 Claude 进程并告警)。
   守卫必须「按需化」:我不用 Claude 的时候它直接退出,不要常驻占资源。请实测并告诉我空闲时每次检查花多少 CPU 时间。
8. 演练(必须真的做,不能只写方案):
   - 出口身份:经代理探测的出口 = 我选定的那个固定出口。
   - 非代理程序:用不走系统代理的方式访问测试站点,出口应当同样被收编,不能是我的真实公网 IP。
   - IPv6 和 UDP 分别单独测(UDP 可以用 STUN 探测,它就是 WebRTC 拿到你公网地址的那套协议)。
   - 真实掉线:停掉代理核心几分钟,观察会不会出现真实 IP 直连,然后自动恢复。
   - 新域名不例外:把一个无凭据的测试程序改名为 claude 开头,去访问一个不在名单里的域名(最好挑你规则里本来就走直连的那种),确认出口仍然是被收编的固定出口。
   所有演练用无凭据、无账号的测试,不要拿我的真实账号去冒险。演练过程和结论写进报告。

【交付】
1. 一份 HTML 报告(暗色主题):审计前后对比、架构图、逐项配置与改动位置、每项怎么验收、演练记录(含失败与回滚)、与手册的符合度对照(达标的列证据,没做到的列原因)、已知边界。
2. 所有脚本放在一个独立目录(例如 %USERPROFILE%\ClaudeGuard\),报告里写清楚每个文件干什么、怎么手动跑。
3. 最后给我一段「日常怎么用」的 SOP:点哪个图标、多久看一次、看到告警怎么办、多久演练一次。

【风格要求】
- 不粉饰:没做到的就写没做到,并说清楚风险由谁承担。
- 每个结论都要有实测证据,不要写「应该可以」。
- 遇到你解决不了的环境限制(比如防火墙改不动),如实告诉我并给替代方案,不要偷偷降级还当成完成。

提示词 B · 不是 Windows / 不用 Clash Verge

提示词 B · 环境适配 适用:macOS、Linux、其他代理客户端(先把方括号里的信息填好)
我不使用 Windows + Clash Verge Rev 这套组合。我的代理环境是:
【填写:操作系统 + 客户端名与版本 + 是否支持 TUN/系统扩展/全局接管 + 是否支持按进程或按应用做规则】
例如:macOS + Surge / macOS + ClashX Pro / iOS + Shadowrocket / Linux + 命令行 mihomo / sing-box。

请先完整读取这份手册的正文(它是 JS 单页应用,正文在 /assets/*.js 里,别只抓空壳 HTML):
https://www.heigeai.com/claude/

然后按同样的目标——「连不上可以,真实 IP 直连不行」——为我的环境做等价实现。
红线与提示词 A 相同:不许擅自换我的节点或出口;动手前先备份;每改一处立刻验证代理还活着;做不到就如实说,不要偷偷降级。

请重点回答我三件事:
1. 我的客户端能不能做到「围墙接管」(TUN / 系统扩展 / 全局路由)?如果不能,我差在哪一层?有没有退而求其次的方案,以及那个方案漏掉的是什么?
2. 能不能按「进程」或「应用」做规则?如果不能,用什么兜底(只按域名 + 关键词够不够),以及名单补不完的风险有多大?
3. 手册要求的那些演练,在我的环境里哪些还能做、哪些做不了?做不了的用什么替代验证?

最后给我一份 HTML 报告:我的环境能覆盖到哪几层、覆盖不到哪几层、每层缺口在什么情况下会真的咬到我。

提示词 C · 十分钟最小保护版

提示词 C · 最小保护 适用:没时间做全套,先把最要命的几层堵上
我没时间做全套。请先读这份手册的正文(JS 单页应用,正文在 /assets/*.js 里,别只抓空壳 HTML):
https://www.heigeai.com/claude/

然后只帮我做三件事,每做一件当场验证一次:
1. 建一个只含单个固定节点、不含 DIRECT 的专用策略组,把 Claude / Anthropic 全家族域名指过去,并加上关键词兜底(DOMAIN-KEYWORD,claude 和 anthropic)。
2. 打开 TUN(或我客户端里等价的全局接管),并关闭 IPv6。
3. 设置遥测关闭开关(DISABLE_TELEMETRY、DISABLE_ERROR_REPORTING 之类,按我客户端实际支持的来)。

做完立刻跑一次出口核对:确认经代理的出口就是我选定的那个节点,并且我的真实公网 IP 不在任何结果里出现。

然后明确告诉我:我跳过了哪些层(启动预检 / 常驻守卫 / 专用浏览器 / 各类演练),这些缺口在什么情况下会真的咬到我,以及我什么时候应该回来补做。
不要安慰我,不要说「问题不大」。

提示词 D · 配好之后的月度演练核对

提示词 D · 月度核对 适用:已配好整套之后,每月自动/手动跑一次
做一次防封环境的月度演练核对。

1. 读取 %USERPROFILE%\ClaudeGuard\last-drill.txt(内容形如 2026-10)。
   - 如果它等于当前年月 → 本月已经演练过,直接读 real_drill.txt 向我汇报关键结论(各项是否 PASS、最终出口是否回到固定出口),然后结束。
   - 如果不等于当前年月 → 继续第 2 步。
2. 先确认没有演练正在跑(检查是否存在 drill-active.marker)。如果有,等它结束(最多 6 分钟)再读报告向我汇报。
3. 做一次掉线演练:停掉代理核心 3-5 分钟 → 验证这段时间内不会出现真实 IP 直连 → 恢复核心 → 确认出口回到我的固定出口、守卫状态回到 SAFE。
   演练期间要告诉我会断网几分钟,让我先保存手上的东西。
4. 把报告写到 %USERPROFILE%\ClaudeGuard\real_drill.txt,并更新 last-drill.txt 为当前年月。

全程红线:不要改我的节点、不要改出口、不要动任何规则配置。
如果提权失败或演练中途出错,把错误写进 guard-log.txt 并如实告诉我,不要静默跳过。

顺手拿去:转发给小伙伴的一段话

分享文案 发群 / 朋友圈 / 论坛都可直接用
【Claude / GPT 防封环境配置 · 小白图解版】
https://www.heigeai.com/claude/

这是「黑哥」改编的图解指南,不用懂网络也能照着做。我自己按它把机器整套配好了,
另外附一份脱敏后的实操报告,以及一段可以直接丢给 AI 的提示词——
你把网址和提示词一起发给你的 AI 助手,它就能在你机器上照做一遍,基本不用自己动手。

核心就一句话:连不上可以,真实 IP 直连不行。
做法是把 AI 流量锁死在一个固定出口:专用策略组(组内不放 DIRECT)+ 围墙接管(TUN)+ 进程/域名/关键词三级规则 + 启动预检 + 常驻守卫 + 定期演练。
GPT / ChatGPT 完全同理,把域名换掉就行。

提醒一句:这世上没有"免封"这回事。它做的是减少意外直连、防止配置漂移、少暴露不必要的信息;
账号结果由平台决定,路径由我们自己把关。

GPT / 其他 AI 产品:换掉这些名字就行

整套机制与产品无关,只要把"被保护对象"换成对应产品即可。同一个思路可以开多个专用组,各自锁自己的固定出口(或者共用同一个,看你习惯)。

配置项ClaudeChatGPT / GPT
进程规则PROCESS-NAME-REGEX,(?i)^claude桌面端进程名(按实际填写);网页版靠专用浏览器
官方域名claude.ai / claude.com / anthropic.com / claudeusercontent.com / console.anthropic.com / statsig.anthropic.com / support.claude.comchatgpt.com / openai.com / oaistatic.com / oaiusercontent.com / ab.chatgpt.com
关键词兜底DOMAIN-KEYWORD,claude
DOMAIN-KEYWORD,anthropic
DOMAIN-KEYWORD,openai
DOMAIN-KEYWORD,chatgpt
崩溃上报sentry.iosentry.io(同样适用)
遥测开关DISABLE_TELEMETRY / DISABLE_ERROR_REPORTING客户端内对应开关 + 系统级环境变量
其他专用策略组、TUN、专用浏览器、预检、守卫、演练——完全通用,一套代码两处用
一个提醒:如果你同时用 Claude 和 GPT,建议它们共用同一个固定出口。多个出口之间来回跳,反而更容易让平台觉得环境不稳定。手册的取向是"真实且稳定",不是"多变"。
02

手册核心消化

原文是一部分篇的图解指南。以下是直接影响配置决策的核心内容,方便你还没看原文时先有个骨架。

2.1 手册的诚实边界

手册开篇即声明:「以下经验也许有用,也许毫无用处」,没有任何免封保证。它能做的是:减少意外直连、防止配置漂移、少暴露不必要的信息;它不能做的是:推断平台的全部风控规则、承诺账号不被限制、拿某个标签(住宅 IP、信任分、时区一致)当护身符。账号结果由平台决定,路径由我们把关。

2.2 十个关键词(全篇比喻体系)

术语比喻配置含义
IP 地址门牌号网站看到的「你从哪来」。代理能改变服务端看到的来源,但撤不回已记录的地址
代理 / 固定出口快递代收点专用策略组只放一个固定出口;选出口前核对地区、稳定性、日志政策
直连家门口直寄配置里的 DIRECT。故障底线:代理不可达时拒绝业务,不能悄悄走 DIRECT
系统代理门口告示只约束「听话」的程序;不读系统配置的程序照样自己出门
TUN一圈围墙路由层接管流量,但仍要检查排除项、IPv6 和掉线行为
DNS电话簿纯代理模式下系统 DNS 返回真实地址可能是正常行为;TUN 模式要核对 dns-hijack 与 IPv6
IPv6侧门只锁正门(IPv4)不够;IPv4 安全不能代替 IPv6 验收
WebRTC对讲机UDP 可能绕过 HTTP 代理直接报出地址,需单独复核候选类型
浏览器指纹长相笔迹WebGL/Canvas/字体/UA/时区的组合。保持真实稳定,不堆叠随机指纹插件
出站限制 / 防火墙门卫没通过检查的包裹一件也不许出门;必须在发包前拒绝,定时守卫只是补充

2.3 域名清单:只记 claude.ai 远远不够

产品家族要访问多个域名,分五组管理:核心与登录(claude.ai / claude.com / anthropic.com / claudeusercontent.com / console.anthropic.com / statsig.anthropic.com / support.claude.com)、连接器与更新(安装器、更新进程、sentry.io 崩溃上报)、浏览器桥与内容(Datadog intake 遥测)、可选运行遥测、公共分发依赖。客户端一升级这张表还可能变,所以要用进程规则和关键词兜底「名单外」的新域名。

2.4 IP、指纹、档案:三件事分开看

补救动作修到了哪件事没修到什么
改 WebGL 字符串只改了「长相」里的一个字段IPv6 直连(门牌号)一点没修好;单字段伪造还可能和其他字段矛盾
清 Cookie清掉了本地记录服务端历史(档案)撤不回
开无痕模式不带出本地 Cookie不隐藏 IP;不能用于伪装「新设备」
落到本机:指纹治理 = 保持真实稳定的环境(语言和时区与你真实情况一致,不伪造「住在出口国」)、专用资料目录隔离工作环境、不装来路不明的随机指纹插件、定位权限按需关闭。出口地 ≠ 居住地,只陈述真实背景。
03

配置后的数据流

每一个相关请求,从进程出发到抵达服务端,只走这一条路。

被保护程序
桌面端 / CLI
专用浏览器资料目录
(进程名兜底)
→
TUN 围墙
fake-ip + DNS 劫持
strict-route + gvisor
IPv6 已阻断
→
规则引擎
进程 → 域名 → 关键词
三级匹配,全部指向
同一个策略组
→
专用策略组
select · 仅一个成员
无 DIRECT · 无回落
节点失效 = 快速失败
→
你的固定节点
【你的固定出口IP】
与其他服务同一出口
DNS 也经同一节点解析
→
对岸
服务端看到的
只有这一个地址
断线时的行为:代理组联系不上 → 请求失败(连不上,可以)· 专用浏览器代理端口死亡 → 页面打不开(不回落直连)· 守卫检测到 → 停止进程 + 弹窗告警
为什么用「组」而不是直接写节点名:规则里直接引用节点,一旦订阅更新改了节点名,整份配置会验证失败、回退最小配置(我这边真的发生过一次,机器裸奔了十几分钟)。专用组把「出口身份」和「节点名」解耦——节点改名时只表现为探测失败,守卫会明确报告,而不是整个代理崩掉。
04

已实施的配置(逐项)

对应手册的施工图。每项都标注了改动位置、验收方式,以及哪些地方有坑。

① 备份 第一步

Clash Verge 全量配置(profiles/、verge.yaml、config.yaml 等)+ 防火墙策略导出到带日期的备份目录。改坏了可原样退回。这一步不要省。

② 专用策略组 核心

在 groups 增强配置里 append(注意:不能写在订阅 merge 文件里——merge 对 proxy-groups 按索引覆盖,会顶掉订阅自带的全部分组):

# Profile Enhancement → groups append: - name: Claude type: select # 只有一个成员,锁死固定出口 proxies: - '【你选定的那个固定节点名,须与订阅里完全一致】'

组内没有 DIRECT、没有自动回落。节点失效时连接快速失败——绝不悄悄改走别的出口,更不回退直连。换节点只改这一行,改完在 Verge 重新应用。

③ 接入模式:围墙(TUN)核心

stack: gvisor、strict-route: true、auto-route、dns-hijack: any:53、ipv6: false、fake-ip 池 198.18.0.1/16。验收:TUN 适配器 Up;非代理程序(curl --noproxy "*")的出口与代理出口一致(被围墙收编)。

坑:如果你在 Verge 里开了「TUN 模式」的应用设置,那么 tun.dns-hijack 这个字段会被应用设置接管——你在 merge 或 Script 里再写一遍,它会弹提示「扩展配置或脚本写入了由应用设置接管的字段 tun.dns-hijack,这些值已被丢弃」。这个提示是无害的:Verge 自己生成的配置里本来就是 dns-hijack: [any:53],和你要设的一样。把那行删掉就不弹了,行为不变。

④ 域名与进程规则(Script 前置)核心

规则写在 Script 增强配置里前置到 rules 最前面(同样注意:merge 文件的 prepend-rules 是死键,GUI 不会内联它):

// 顺序:进程兜底 → 官方域名 → 关键词兜底 → 探测同组 → 其他服务 'PROCESS-NAME-REGEX,(?i)^claude,Claude' // 桌面端/CLI/Helper/更新器,兜住未知新域名 'DOMAIN-SUFFIX,claude.ai,Claude' 'DOMAIN-SUFFIX,claude.com,Claude' 'DOMAIN-SUFFIX,anthropic.com,Claude' 'DOMAIN-SUFFIX,claudeusercontent.com,Claude' 'DOMAIN-SUFFIX,statsig.anthropic.com,Claude' 'DOMAIN-SUFFIX,console.anthropic.com,Claude' 'DOMAIN-SUFFIX,support.claude.com,Claude' 'DOMAIN-SUFFIX,sentry.io,Claude' // 崩溃上报 'DOMAIN,http-intake.logs.us5.datadoghq.com,Claude' // 遥测 intake 'DOMAIN,browser-intake-us5-datadoghq.com,Claude' 'DOMAIN-KEYWORD,claude,Claude' // 关键词兜底:名单外新域名不漏 'DOMAIN-KEYWORD,anthropic,Claude' 'DOMAIN,api.ipify.org,Claude' // 守卫探测与业务同组同路径

同时这些域名的 DNS 解析(DoH)也固定走同一节点(#Claude),即使主组切换,解析出口也不漂移。验收:api.ipify.org(规则指向专用组)与 ifconfig.me(走默认规则)出口一致。

⑤ 专用浏览器(失败即断)

独立资料目录(零扩展、全新档案)+ 显式本地代理 + WebRTC 非代理 UDP 禁用:

msedge.exe --user-data-dir="%USERPROFILE%\ClaudeGuard\EdgeClaudeProfile" \ --proxy-server="http://127.0.0.1:7897" \ --force-webrtc-ip-handling-policy=disable_non_proxied_udp \ --no-first-run --disable-sync --restore-last-session=false

设计要点:代理端口死亡时浏览器连接被拒、页面打不开,不会回落直连——这是「连不上,可以」在浏览器层的落地。日常浏览器完全不受影响(这是独立入口)。

⑥ 启动预检(出门前的安检)

预检脚本:桌面端或 CLI 启动前,经代理探测一次出口身份,与预期不符或超时即拒绝启动(exit 78)并弹窗说明原因。同时注入大小写两种代理环境变量。

⑦ 常驻守卫(巡逻保安)已按需化

计划任务(提权、登录时启动、每 3 分钟一次,经 wscript 包装器静默启动——不弹控制台窗口):检查 TUN 适配器 / 混合端口 / 出口身份三重状态;出口漂移或代理核心死亡时停止进程并弹窗告警;代理恢复后自动回到 SAFE。状态写 status.json,日志写 guard-log.txt(按大小轮转)。

只在你用的时候才干活:任务动作现在是一道门控。它先判断「有没有被保护程序在使用中」,没有就直接退出、根本不启动 PowerShell。只有四种情况才做完整检查:① 有对应进程;② 有 node 在跑 CLI;③ 专用浏览器在开着;④ 上次状态不是 SAFE(需要恢复)。四种场景均已实测。

⑦-b 资源开销实测(优化前后)

项目优化前优化后
空闲(没在用)每次都启动 PowerShell 做全量检查
≈ 2200 ms CPU / 分钟
门控 0.2 s 内退出,不启动 PowerShell
≈ 190 ms CPU / 次
检查里的最大开销源Get-NetAdapter 走 CIM,冷启动约 1000 ms改用 .NET NetworkInterface 枚举,约 30 ms
运行时的完整检查≈ 3100 ms 墙钟 / 2200 ms CPU≈ 1500 ms 墙钟 / ≈ 1090 ms CPU
常驻内存无常驻(进程用完即退)无常驻(同样用完即退,没有后台长驻进程)

也就是说:不用的时候,它一分钟只花约 0.19 秒 CPU(≈单核 0.3%),且不占常驻内存;出口探测这类真正的网络动作,只在运行时才发生。这一点很重要——否则一个"为了安全"的守卫反而变成常驻负担,会让人想把它关掉。

⑧ 隐私与遥测开关

开关设置说明
DISABLE_TELEMETRY=1(用户级)运行遥测
DISABLE_ERROR_REPORTING=1(用户级)错误上报(报错材料可能夹带路径/截图)
Windows 系统定位Denied按需授权;关闭不阻止服务端经 IP 推断大致地区
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC未设(可选)手册原文把它注释掉:范围太广,可能影响 Remote Control 等能力
模型改进 / 主动反馈账户页自选隐私选择,不是防封手段;提交反馈前先审查附带内容
查环境变量的坑:用 [Environment]::GetEnvironmentVariable($v) 不带 scope 读的是进程继承值(可能是过时的旧值),要查注册表必须带 "User" 或 "Machine"。我因为没带 scope 误判过一次遥测开关没生效,实际用户级是 1。

⑨ 桌面端预检挂钩

桌面客户端若是 MSIX 安装,开始菜单的入口改不了启动参数。做法是新建一个「安全启动」快捷方式:静默调用预检脚本 → 出口身份不符时弹窗告知原因并拒绝启动;通过则拉起原版应用。把这份快捷方式同时放进桌面和开始菜单,就不用改使用习惯了。

实测结论:从开始菜单点原版入口,守卫也兜得住。关键是守卫认不认得出那个进程——实测进程名是 claude.exe(注意:磁盘上的可执行文件名可能是 claude-desktop.exe,运行时进程名和磁盘文件名不是一回事,别搞混),门控查询 Name LIKE 'claude%' 全部命中;WQL 的 LIKE 是大小写不敏感的。
唯一的实质差异:守卫是按周期跑的,所以"出口恰好已经漂移时启动",会先用错误出口发出若干请求、最多一个周期后才被终止——已发出的请求撤不回来。预检则是启动前拦下,一次都不发。节点固定不动时概率极低。

⑩ 演练静默与月度自动化

05

失败演练记录

手册要求:用无账号、无密钥的受控测试证明保护真的有效。以下是真实执行的演练,不是方案推演。

演练 A · 出口身份

PASS 经代理探测的出口 = 【你的固定出口IP】 = 预期值(地区与预期一致)

演练 B · 非代理应用路径

PASS curl --noproxy "*" 直连尝试 → 出口仍是 【你的固定出口IP】(被围墙收编,未暴露 【你的真实公网IP】)

演练 C · 守卫状态机

PASS 模拟掉线 → CHECKING(1/2) → 恢复后 SAFE;真实掉线 → CHECKING → BLOCKED(连续 2 次失败)→ 恢复后自动 SAFE

演练 D · 真实代理掉线(停掉核心服务)

T+00:00 服务停止 → T+00:05 TUN 网卡消失(真实 IP 路径暴露) T+00:51 守卫 SAFE → CHECKING(第 1 次失败) T+02:07 守卫 → BLOCKED(第 2 次失败),进程停止逻辑就位 T+04:08 行为验证:直连 BLOCKED / 失败,经代理也失败(核心已停)—— 无真实 IP 泄漏路径 T+04:10 服务恢复 → T+04:55 TUN 回来 → T+05:11 守卫自动 BLOCKED → SAFE VERDICT 出口身份恢复 = PASS(【你的固定出口IP】) VERDICT 直连被围墙收编 = PASS
诚实记录 —— 防火墙阻断层在某些环境不可用:演练中守卫激活 lockdown 时,子进程内部回读显示防火墙已启用,但父进程与独立监控进程在约 1 秒后回读均为未启用。隔离实验证实:该执行环境会在约 1 秒内还原防火墙启用状态(机器上并无第三方管家软件)。因此「整机出站默认拒绝」这一层无法驻留。守卫已优雅降级:激活失败时记录一次、停止进程、弹窗告警,并周期性重试。
这层的缺口在哪:代理核心死亡的瞬间到守卫发现之间,有一个约 1–2 分钟的窗口。此期间专用浏览器是失败即断(主要路径无泄漏),但桌面端 / CLI 若正在运行,理论上存在短窗口。要不要再加一层进程级出站控制,由你自己权衡。

演练 E · WebRTC 候选检查(需人工)

用专用浏览器打开 browserleaks.com/webrtc:合格线 = 候选地址里不出现你的公网 IP,出现的公网 IP 只能是 【你的固定出口IP】。注意 mDNS 隐藏本地地址证明不了公网没泄漏,IPv4 / IPv6 / 候选类型都要看。换资料、换浏览器、升级后重测。

演练 F · 出口漂移分支(干跑)

这是最可能真实发生的漂移场景:TUN 在、端口在、代理看着一切正常,但出口 IP 被换掉了(机场改节点名、订阅更新顶掉配置)。演练 D 走的是另一条路(TUN 消失 → BLOCKED),所以这条分支必须单独验证。

为什么不直接改配置来测:把预期出口临时改成假 IP,会让真实守卫在下一个周期判定漂移并杀掉正在使用的程序。所以改用干跑副本——复制一份守卫脚本,在里面强制注入假预期 IP、状态写到独立文件、杀进程与弹窗都降级为记日志。生产配置全程一个字节未动。

T+00:00 干跑启动,强制 expected=203.0.113.99(真实配置未改) T+00:01 真实出口探测 → 【你的固定出口IP】,与假预期不符 → 判定 EXIT-MISMATCH T+00:01 kill-point reached(干跑中已抑制) —— 证明真实运行时会走到杀进程那一步 结论:TUN/端口正常但出口 IP 被换掉时,守卫抓得住,并会阻止继续会话 副作用核对 进程数前后不变;生产状态文件全程未变

演练 G · UDP 路径(STUN,WebRTC 泄漏的真实机制)

UDP 是最容易被忽略的一条旁路:它可能绕过 HTTP 代理直接报出地址。STUN 正是 WebRTC 拿你公网地址的那套协议,所以直接用它验证。

方法 向 STUN 服务器发 UDP binding request,看服务端回显的映射地址(XOR-MAPPED-ADDRESS)是谁 现象 DNS 先被劫持到 fake-ip 段(198.18.x.x)→ UDP 也被围墙接管 结果 6/6 样本一致(Google ×3 + Cloudflare ×3):映射地址均为 【你的固定出口IP】 VERDICT UDP 路径 = PASS —— 走受控出口,真实 IP 未暴露(端口每次不同属正常 NAT 行为)

演练 H · 直连对照(最关键的一项)

手册要求「故意把正在使用的组切成 DIRECT」看会暴露成什么样。这台机器上 enable_external_controller: false——没有运行时 API,切换只能改配置文件并重载核心,而这台机器有过「改配置 → TUN 死亡 → 整机裸奔」的前科。所以改用零配置改动的等价对照法。

思路:订阅规则里本来就有一条 GEOIP,CN,DIRECT(国内域名走直连)。拿它当"直连路径样本",同一个域名、同一台机器,只换发起进程的身份,看出口是谁。

样本 国内 IP 回显站点(命中 GEOIP,CN,DIRECT) 对照 A 普通进程 + 经代理端口 → 【你的真实公网IP】(← 证明一旦判 DIRECT 就真的出去了,围墙拦不住) 实验 B 改名成 claude 开头的进程 + 经代理端口 → 【你的固定出口IP】(被收编) 对照 C 普通进程 + 不走代理、自己硬连(--noproxy)→ 【你的真实公网IP】 实验 D 改名成 claude 开头的进程 + 不走代理、自己硬连(--noproxy)→ 【你的固定出口IP】 VERDICT = PASS —— 进程规则压过了 DIRECT 规则;不论走不走代理端口、不论目标是国内还是境外,被保护进程都没有直连路径
这个结论比手册要求的还强一层:手册只要求"名单外的新域名不能漏",实测结果是连规则本来判直连的场景都拦得住。所以"名单补不完"这个顾虑在这套配置下不成立。
对照组反证的另一件事:一旦判 DIRECT,真实 IP 就出去了——这正是专用组里绝不能有 DIRECT 成员的原因。
安全说明:演练前已确认被保护程序完全退出;测试用的程序由 curl 改名而成、不含任何凭据,全程只访问 IP 回显站点,没有向目标服务发出任何请求,用完即删,生产配置零改动。
06

日常使用 SOP

日常怎么用

  1. 桌面客户端:点「安全启动」快捷方式(桌面和开始菜单各放一份)。它先探测出口,对了才启动;不对就拒绝启动并弹窗告诉你原因。从开始菜单点原版也能用——守卫确实会兜底(已实测),但少了启动前这道预检。
  2. 网页版:只用专用浏览器快捷方式(独立资料目录 + 显式本地代理,代理死了页面直接打不开,不会偷偷走直连)。日常上网继续用你平时的浏览器,两者互不污染。
  3. CLI:通过预检脚本启动(出口不对会拒绝启动并说明原因)。

节奏

频率动作
需要时(不必每天)看一眼 status.json 的 state 与时间戳。注意:守卫改成按需化后,只在运行时才写这个文件,所以时间戳是「最近一次使用时的检查时间」,不是你打开文件的当下——别把它当成过期
每次变更后换网、升级、唤醒、重启代理、插网卡 → 跑一次验收脚本(出口身份 + 非代理程序路径两项)
每月(可自动化)计划任务触发 + 月门控(本月跑过就跳过,错过则下一个周期补跑)。手动跑也可以

看到告警时

为什么不需要天天盯着它:固定出口与围墙是配置态的,只要不去动节点选择,每次开机都自动生效、不会漂移。守卫的作用是防"意外"(订阅换节点名、核心崩了、更新把配置顶掉),不是要求你天天巡检。所以它被设计成只在运行时才活动,平时几乎不占资源。
07

24 项检查清单

改编自手册原版 24 项。勾选只记录人工检查进度,不自动认证网络安全;换网/升级后重新过一遍。

边界与入口
出口与网络
阻断与门禁
环境与数据
演练与维护
08

与手册的符合度:达标与差距

重新拉取手册原文逐条核对。下面不粉饰——达标列证据,差距列原因。

已达标(有实测证据)

手册要求状态证据
专用组锁定单一出口,禁止自动退回 DIRECT达标select 单成员,无 DIRECT、无回落
围墙接管 + 检查排除项、DNS、IPv6达标TUN 开(strict-route/gvisor/fake-ip/dns-hijack);curl -6 出口 = 固定出口,IPv6 被收编而非泄漏
新域名也不能获得例外达标(强验证)演练 H:用改名进程访问本该直连的国内域名 → 出口仍是固定出口;同一域名换普通进程就是真实公网 IP。进程规则压过了 DIRECT 规则
专用浏览器隔离达标独立资料目录 + 显式本地代理,失败即断
未知状态拒绝新启动达标预检脚本出口不符即 exit 78
五类演练(掉线/状态机/漂移/UDP/直连对照)达标演练 C/D/F/G/H 全部 PASS
遥测开关达标遥测/错误报告变量已设(用户级)
无意外直连例外达标NO_PROXY / no_proxy 用户级与系统级均为空

差距(手册要求了,这台机器没做到或需你自行定夺)

手册要求现状说明
「任何新域名也不直连」要由业务进程的全目的地出站限制实现OS 层未落地手册明确点名的一层。本机防火墙配置文件未启用(启用状态被环境秒级还原),现有相关规则全是 Allow 且不生效。
但演练 H 给出了实测补充:核心在线时进程规则压过了直连规则,连"规则判直连"的场景都被收编,所以"名单补不完"不成立。真正剩下的缺口只有一个:核心进程本身死掉的那一瞬——而演练 D 实测此时是直接黑洞,不是泄漏。是否还要再加一层进程级出站控制(第三方工具),属个人权衡
保持真实稳定的环境,不伪造「住在出口国」自行定夺手册反对的是"频繁改动"和"单字段伪造导致自相矛盾"。时区与区域应当内部自洽:要么全部与真实居住地一致,要么像有些人那样与常用出口地一致且长期使用。关键是别频繁改,也别出现"时区是 A、语言是 B"这种自相矛盾的混合状态
单独查 IDE、更新器、MCP、后台子进程的出口已核对若客户端数据目录内没有 MCP 配置文件,说明未配置 MCP 服务器,无额外出口需要单独管。若你配了 MCP,记得单独看它们的出口
把正在使用的组故意切成 DIRECT 做演练已做(等价法)见演练 H:用零配置改动的等价对照拿到结论,不碰生产配置。若你的机器开了控制器 API,可以直接切,但务必先退出被保护程序
对 UDP / QUIC 单独演练达标演练 G:STUN 探测 6/6 样本映射地址均为固定出口
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC知情取舍未设。手册原版把它注释掉:范围太广,可能影响 Remote Control 等能力
09

踩过的坑(这部分最值钱)

下面每一条都是真实踩出来的,不是理论。照着做之前先扫一眼,能省你几个小时。

问题根因与处理
配置验证失败回退最小配置、TUN 消失(机器一度裸奔十几分钟)merge 文件的 proxy-groups 按索引覆盖了订阅全部分组 → 组定义改用 groups 配置的 append;规则改用 Script.js 前置
merge 文件的 prepend-rules 完全不生效它是死键,GUI 不会内联它。规则必须写在 Script 增强配置里用 config['rules'] = rules.concat(...) 前置
开代理时弹窗「扩展配置或脚本写入了由应用设置接管的字段 tun.dns-hijack,这些值已被丢弃」无害。「TUN 模式」应用设置接管了这个字段,它生成的配置里本来就是 dns-hijack: [any:53],与你的意图一致。删掉自己写的那行即可,行为不变
防火墙启用状态约 1 秒被还原该执行环境的限制(无第三方管家软件也一样)。Set-NetFirewallProfile 的「启用」与「默认出站策略」必须分两次调用,且要回读验证。若同样被还原,就接受降级方案
计划任务注册后消失RepetitionDuration=MaxValue 生成非法 XML 被调度服务丢弃 → 不要设这个参数
任务每分钟闪一次控制台窗口动作不要直接调 powershell.exe。用 wscript.exe 跑一个 VBS 包装器(sh.Run ..., 0, False)静默启动
VBS 脚本报 800A0408VBS 文件里有中文等非 ASCII 字节。VBS 必须纯 ASCII,注释也用英文
PowerShell 脚本 exit 1 且无日志UTF-8 BOM 问题。用 PowerShell 7 的 Set-Content -Encoding UTF8 写出的是无 BOM 文件;而脚本若跑在 Windows PowerShell 5.1 下会按 GBK 解析中文 → 语法错误。必须显式写 BOM:[System.IO.File]::WriteAllText($path,$text,(New-Object System.Text.UTF8Encoding($true)))
字符串全局替换把脚本搞挂把 Show-Toast 全替换成 Write-Log 时,连 function Show-Toast(...) 定义行也改了,真日志函数被覆盖 → 日志全丢。改成只替换调用点
非管理员改不了提权任务(拒绝访问)任务以 RunLevel=Highest 注册。解法:复用任务自身的提权上下文——放一个一次性 marker 文件,门控脚本看到就调用修改脚本(子进程继承管理员权限),改完自动删 marker
以 RunAs 提权启动 powershell.exe 被拦截(cmd 的 RunAs 正常)改用已有的高权限计划任务通道:Start-ScheduledTask -TaskName ...,无需 UAC 即可静默提权
门控「≤7 号才跑」导致错过首周一后整月不再补跑触发源是每周一(可能落在 5/12/19/26 号)→ 取消日期窗口,改为「本月没跑过就跑」
诊断脚本读到出口为空,误判成"假 SAFE"状态文件里实际出口的字段名是 exitIp(预期值才叫 expectedExitIpv4)。读错字段会得到空值
进程探测测试得出错误结论用 notepad.exe 的副本当假进程,它启动 3 秒后自己退出 → 误判成"门控失效"。做进程存在性测试必须确认假进程真的活着再断言,改用常驻的进程(cmd /k 之类)
把磁盘可执行文件名当成了进程名桌面端磁盘上叫 claude-desktop.exe,运行时进程名是 claude.exe。两者不是一回事,写规则前先跑起来看真实进程名
Python 的 struct.unpack 解 STUN 响应一直报错原因未查明(长度明明够)。改用 int.from_bytes + 逐字节 XOR 手工解码即可。解这类二进制别死磕 struct
环境变量读到 0,以为开关没生效不带 scope 读的是进程继承值(可能是旧值),查注册表必须带 "User" / "Machine"
10

万一被限制:申诉只讲事实

先分清是哪种问题(网络故障 / 服务故障 / 登录失效 / 额度限制 / 正式账户限制),正式限制走官方入口 support.claude.com,留好工单号,凭据只留在自己手里,不找「解封服务」。

四步

  1. 先留证据:完整错误提示、时间与时区、客户端版本、近期变更。
  2. 分清类型:按上面五类对号,别把网络超时当成封号。
  3. 走官方入口:陈述实际用途和事实,不编造信息。
  4. 留好工单号:跟进复核,凭据不外泄。

申诉信骨架(英文提交,方括号按实情替换)

Hello, my account was restricted on [date and time zone]. The exact message shown was: [paste the full message]. I use Claude for [your actual work — e.g. programming, writing, daily troubleshooting]. Recent device or network changes: [state facts; write "none known" if unsure]. Could you please review this restriction and let me know what information you need? I can provide relevant, de-identified evidence through official support channels. Thank you.

流言粉碎机(社区六个常见说法,均无可靠依据)

流言真相
「养 3-7 天再充值」社区经验,缺因果证据,不是安全保证
「前 7 天不能访问 Portal」无可靠依据
「用量没到黄色就安全」用量界面不是风控阈值
「说自己住在出口所在地」出口地 ≠ 居住地,只陈述真实背景
「邮件无痕打开就不泄漏」无痕不隐藏 IP
「信任分 100、开训练就免封」没有这样的保证;检测站 100 分是它自己的打分
← 返回 华AI 分享小站