先判断故障发生在哪一层
ChatGPT 页面打不开、登录转圈或发送消息后超时,并不一定是“节点坏了”。一次浏览器访问至少涉及本机代理设置、Clash 内核监听、规则匹配、代理节点、DNS 解析以及目标服务响应。先区分故障表现,能避免一开始就改动配置、切换多个节点,最后无法判断是哪项操作起了作用。
同时确认服务本身和使用条件:查看 OpenAI 服务状态页面,确认当前网络环境、账户和服务符合 OpenAI 的可用范围及使用条款。代理连接成功不代表服务一定可用;遇到账户验证、地区可用性或服务端故障时,修改 Clash 规则通常不能解决问题。
| 表现 | 先检查什么 | 暂时不要做什么 |
|---|---|---|
| 页面提示无法建立连接 | 内核是否运行、本地代理端口是否监听、当前节点能否访问普通 HTTPS 网站 | 不要先重装客户端或清空整份配置 |
| 页面能打开,登录一直转圈 | 系统代理是否生效、登录相关域名是否命中正确策略、浏览器是否有独立代理设置 | 不要反复提交密码或验证码 |
| 能登录,但消息发送超时 | 连接日志中的目标域名、命中规则、代理组选择和节点稳定性 | 不要把单次延迟测试当作业务连接成功证明 |
| 浏览器可用,桌面应用不可用 | 该应用是否遵循系统代理,是否需要客户端支持的 TUN 接管 | 不要默认所有程序都会读取系统代理 |
排查时一次只改变一个变量,并记录操作前后的结果。例如先固定浏览器、网络和节点,只检查系统代理;确认后再检查规则。若同时更换节点、切换模式、修改 DNS 并启用 TUN,即使问题消失,也很难知道真正原因。
检查客户端与系统代理
先确认 Clash 客户端正在运行,当前配置已经载入,内核没有因配置解析错误退出。Clash Verge、Clash Verge Rev、Clash for Windows 等客户端的菜单名称和默认端口可能不同;不要把某篇旧教程里的端口当作固定值。查看客户端设置中的 HTTP、SOCKS 或 mixed-port,再核对系统代理指向的地址与端口。
- 在客户端日志中确认内核已启动,并查看是否有配置加载失败、端口占用或 DNS 初始化错误。
- 在代理页面确认当前模式为规则模式,并选择一个可用的代理组成员。只选择节点列表中的节点,如果实际规则指向另一个组,请求仍可能走另一条路径。
- 开启客户端的系统代理。Windows 可在「设置」→「网络和 Internet」→「代理」核对手动代理或脚本设置;macOS 可在当前网络服务的代理设置中检查代理状态。不同客户端可能通过系统接口自动启停,界面入口会有差异。
- 在浏览器中重新加载页面,并查看 Clash 连接记录。确认浏览器请求确实出现在记录中,而不是只看托盘图标显示“已启用”。
如果客户端监听地址为本机回环地址,常见形式是 127.0.0.1,但端口以实际配置为准。下面用 7890 举例。在 Windows PowerShell 中运行时使用 curl.exe,避免命令别名造成参数行为不同:
Test-NetConnection 127.0.0.1 -Port 7890
curl.exe --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 25 -I https://chatgpt.com/
- 第一条命令中的
TcpTestSucceeded : True只说明本机能够连接这个端口,不证明远端代理可用。 - 如果端口连接失败,检查客户端是否启动、端口是否抄错,以及是否有其他程序占用该端口。
- 如果请求收到 HTTP 响应,即使响应状态不是
200,通常也说明本地代理到目标之间至少完成了部分 HTTP 交互;应结合状态码和客户端日志继续判断。 - 如果本地连接成功后仍在 TLS 握手或等待响应阶段超时,再检查当前节点、规则和网络路径。
显式代理测试能帮助区分浏览器设置与代理链路,但它不能完全模拟网页登录流程,也不能代替浏览器实际测试。命令返回结果、HTTP 状态和错误文本应结合上下文判断,不要仅凭一个非零状态码认定节点不可用。
动手追踪请求并核对规则
下面用一次可重复的浏览器测试定位规则问题。客户端菜单名称可能不同,原则是打开连接或实时日志视图,观察目标域名、命中规则、策略组及所选节点。测试前关闭同一网站的多个标签页,减少后台请求干扰;完成后再逐项恢复临时设置。
- 在 Clash 中清空或暂停旧连接记录,然后在浏览器打开 ChatGPT 页面,等待页面明确报错或登录完成。
- 回到连接记录,按时间查找刚产生的连接,记录显示的域名、规则类型、策略组和结果。不要只查看一条连接:页面、身份验证、静态资源和接口请求可能使用不同域名。
- 若连接命中
DIRECT,检查规则顺序和最终生效配置;若进入代理组,确认该组当前选中的成员确实是可用节点,而非直连、拒绝或另一个未选中的组。 - 在代理组中手动选择一个已知可用节点,再刷新页面并重复观察。若只有某个节点失败,问题更可能在节点或出口路径;若所有节点都呈现同样失败,再回查本地设置、DNS、目标服务状态和网络限制。
- 分别测试普通网页与 ChatGPT 页面,并记录结果、时间和当前模式。不要连续快速刷新或反复提交登录信息,这会增加干扰,也可能触发网站的安全验证。
规则按配置顺序匹配,第一条符合条件的规则就会决定连接交给哪个策略。某条宽泛的直连规则若排在更具体的域名规则之前,后面的规则不会再被检查。客户端的规则模式还可能被界面设置或配置覆写,因此应以运行时连接记录和实际生效配置为准,而不是只看订阅原文。
ChatGPT 的网页与登录流程可能访问多个服务域名,服务端也可能调整资源和接口。常见域名示例包括 chatgpt.com、openai.com、auth.openai.com 和 oaiusercontent.com,但这不是完整或永久不变的清单。不要仅凭域名猜测整条访问链路,也不要把所有流量一概设为拒绝或直连;以自己客户端中的实际记录为依据,核对域名对应的规则和策略。
rules:
- DOMAIN,auth.openai.com,代理选择
- DOMAIN-SUFFIX,chatgpt.com,代理选择
- DOMAIN-SUFFIX,openai.com,代理选择
- MATCH,默认策略
这段 YAML 仅展示规则写法和顺序。应用前需要确认配置中已经定义名为“代理选择”的策略组,且域名规则符合自己的网络策略。不要把片段直接追加到一份已有多条规则的配置末尾而不检查顺序;也不要同时在多个覆写位置重复添加相互冲突的规则。修改后先检查配置是否成功加载,再通过连接日志验证命中结果。
排查节点连通性与 DNS
如果规则确实把请求交给代理组,接下来验证节点和 DNS。先用同一客户端访问一个不涉及账户登录的 HTTPS 网站,再用相同节点测试 ChatGPT。若所有 HTTPS 目标都失败,优先检查节点失效、出口网络受限、配置过期或本地时间异常;若只有特定服务失败,则检查该服务相关连接记录和服务状态,避免仅凭节点延迟推断原因。
节点地址本身也可能需要 DNS 解析。若日志显示代理服务器域名无法解析,问题可能发生在“连接节点之前”,此时切换远端策略组未必有帮助。反之,节点已经连通但目标域名解析失败,则应检查 mihomo DNS 配置、当前网络 DNS 服务和日志中的解析错误。DNS 模式、fake-ip 与 redir-host 的工作方式不同,不建议为了单一站点随意互换模式。
- 检查客户端日志是否出现解析失败、连接超时、TLS 错误或规则提供者加载失败,并记录对应域名。
- 确认系统日期、时间和时区准确。时间严重错误会造成证书有效期检查失败,但不要通过关闭证书校验来“修复”。
- 若订阅刚更新后才出现问题,检查当前配置是否仍有效、节点是否存在、策略组引用是否正确,以及客户端是否成功重新载入配置。
- 若问题只发生在某个 Wi-Fi、公司网络或公共网络,换到允许使用的另一条网络进行对照测试;不要绕过网络管理策略。
DNS 相关配置的修改范围可能影响所有应用。一次只调整一项,并在调整前保存可恢复的配置。某些站点使用 HTTPS 及动态资源域名,仅修改浏览器的传统 DNS 设置未必会改变内核对代理连接的解析路径。应根据连接记录判断域名由本机、内核还是代理出口解析,不要假设“换了公共 DNS 就一定走代理”。
区分浏览器与应用流量
系统代理通常只影响遵循系统代理设置的应用;部分命令行工具、浏览器扩展或桌面程序会采用自己的代理参数。若浏览器能访问而某个应用不能,先查该应用的网络设置、代理环境变量和连接记录。只有在确认应用不读取系统代理且客户端支持时,再考虑 TUN;不要把开启 TUN 当成修复所有连接问题的默认步骤。
何时调整 TUN,以及如何恢复
TUN 通过虚拟网络接口接管符合路由条件的流量,可能帮助不遵循系统代理的应用,但也会引入路由、权限、DNS 和防火墙等变量。网页浏览器通常可以先通过系统代理完成基础验证。若确认只有不遵循系统代理的程序无法访问,并且客户端与操作系统支持 TUN,再按客户端说明启用;Windows 上还可能需要安装相关服务或获得系统权限,macOS 则要确认系统扩展或网络权限已获批准。
启用前记录当前工作状态:客户端名称与版本、内核版本、代理模式、监听端口、节点名称、TUN 状态及错误日志。启用后先测试一个普通网页,再测试 ChatGPT,同时查看连接记录是否进入内核。若出现全局断网、DNS 异常或虚拟接口启动失败,先关闭 TUN 并恢复原来的系统代理状态,再根据日志中的具体错误处理,不要同时改动路由表和多组 DNS 参数。
| 观察结果 | 优先结论 | 建议操作 |
|---|---|---|
| 本地代理端口未连接 | 内核、端口或监听设置存在问题 | 确认客户端运行状态与实际监听端口 |
| 连接记录显示直连或错误策略 | 系统模式、规则顺序或策略组选择不符合预期 | 核对运行时命中规则并调整最小范围 |
| 多个节点均无法建立代理连接 | 配置、网络限制、DNS 或服务端状态可能有问题 | 检查日志并用允许的网络环境作对照 |
| 只有一个节点或一个出口失败 | 该节点路径或出口存在差异 | 更换已授权且可用的节点进行单变量测试 |
| 浏览器可用,单个应用失败 | 应用可能不遵循系统代理 | 先查应用代理设置,再评估是否需要 TUN |
如果需要提交问题报告,提供脱敏后的客户端和内核版本、操作系统版本、模式、错误发生时间、目标域名及不含凭据的错误摘要即可。不要公开完整订阅链接、配置中的密钥、账户令牌或带 Cookie 的网络记录。仍无法定位时,可先恢复最近一次可用配置,再按“本地端口—规则—节点—DNS—应用接管”的顺序逐层复测。