本文目录
ChatGPT 或 Claude 的首页能打开,登录或发消息却失败时,重试首页不能回答问题。要把失败动作的状态码与 Clash 记录对上,区分没进入代理、走错出口和已到服务却被拒绝。测试期间固定节点,再分别检查登录会话与持续回复,别让出口变化干扰判断。
超时、403 和回复中断分别代表什么?
记录错误原文、出现时间和刚才的操作,分别确认是登录失败、页面组件空白,还是回复中断。不要把几个现象记成同一个“连不上”,它们可能来自不同请求。
错误提示与排查方向
| 看到的现象 | 优先判断 |
|---|---|
| 页面框架出现,图标、按钮或登录组件空白 | 静态资源域名可能走了不同规则或出口 |
| ERR_CONNECTION_TIMED_OUT / 请求超时 | 网络路径、节点或长连接失败 |
| 401 / Unauthorized | 登录状态、令牌或 API 凭据 |
| 403 / Access Denied | 服务策略、账号状态或请求被拒绝 |
| 429 / Too Many Requests | 频率或额度限制,不是节点延迟 |
| 500 / 502 / 503 | 服务端或上游临时异常,先看官方状态 |
| 回复写到一半停止 | 流式连接、节点切换或网络抖动 |
页面框架出现、内容却没加载时,查看脚本、图片和登录组件的请求;这些资源可能来自不同的静态资源域名。登录跳转、文件上传和模型流式回复也会另发请求。在 Connections 中逐项核对资源与模型请求是否使用同一稳定出口,不要拿另一个网页代替测试。
固定节点,观察失败请求的出口
建立可复现的测试
在 Proxies 固定一条节点
暂时不要使用 url-test 或 fallback,避免测试过程中出口变化。
保持 Rule 模式
打开 Connections,准备观察失败动作对应的域名与规则。
只重复一个动作
例如点击登录、发送同一句短消息,或上传同一个小文件。
保存页面状态和 Clash 结果
记下 HTTP 状态、连接出口、耗时与日志错误。
如果失败动作在 Connections 中完全找不到,浏览器或桌面应用可能没有经过当前 Clash。若记录出现但命中 DIRECT,检查规则;已经走到固定节点却 timeout,才值得换节点或网络做对照。
登录循环:检查浏览器会话与认证请求
登录循环常表现为输入账号后又回到登录页,或者验证码完成却没有进入对话。此时先在同一浏览器的无痕窗口重试,排除过期会话和扩展干扰;不要一上来清掉所有网站数据,那会同时退出其他账号。
观察点击登录后的请求:认证跳转若没有进入 Clash,处理浏览器代理;请求进入后返回 401 或 403,则网络已经到达服务,继续检查账号、登录方式和服务提示。频繁换地区或出口还可能让一次登录跨越多个会话环境,测试期间应保持固定节点。
403 Access Denied:账号、地区与服务限制
明确的 403 或 Access Denied 通常说明请求已到达网站,但被拒绝。检查页面原因、账号状态、地区限制、服务支持范围,以及当前出口是否符合服务条款。这类拒绝与 DNS 超时、端口未开放的原因不同。
Global 模式最多用于判断某条规则是否把请求送错了出口,不能把服务端拒绝变成网络成功。若 Rule 和 Global 都在同一固定节点上返回同一个 403,应停止调整 Clash,转而处理账号或服务政策。
长回复中断时,比较节点与接入网络
模型回复会持续返回数据,节点完成一次延迟探测,不代表它能稳定维持几十秒的连接。测试时将策略组改为 select(手动选择),固定一条节点,用可重复的长提问观察中断时 Connections 的结束原因。
同一固定节点在家庭网络和手机热点上各试一次。若只在其中一个网络中断,重点检查这个网络和 DNS;若两个网络都在相近位置中断,换另一条协议或节点对照。不要用一次成功就下结论,至少重复两三次相同请求。
网页正常但桌面应用或 API 无法访问
浏览器通常遵循 Windows 或 macOS 系统代理,终端里的 curl、SDK 和部分桌面应用可能使用自己的网络设置。同一 API 请求在 Connections 中没有新记录时,先确认应用是否使用当前代理,而不是立刻换节点。
命令行工具可以按自身文档配置 HTTP_PROXY、HTTPS_PROXY;需要统一接管多个不读取系统代理的应用时,再考虑 TUN。API 返回 401 代表请求已经到服务端,应该核对 API key 和请求格式,而不是继续扩大代理范围。
CLASH_PORT=7890
export HTTP_PROXY="http://127.0.0.1:${CLASH_PORT}"
export HTTPS_PROXY="http://127.0.0.1:${CLASH_PORT}"
export NO_PROXY="localhost,127.0.0.1,::1"
curl -I https://example.com$CLASH_PORT = 7890
$env:HTTP_PROXY = "http://127.0.0.1:$CLASH_PORT"
$env:HTTPS_PROXY = "http://127.0.0.1:$CLASH_PORT"
$env:NO_PROXY = "localhost,127.0.0.1,::1"
curl.exe -I https://example.com消息完整返回后,恢复自动节点选择
回到固定节点和 Rule 模式,完成一次登录并发送一条短消息;原问题是长回复中断时,也要重复同一长请求。Connections 应能看到相关请求,页面不再返回原来的错误,回复也能完整结束。
短消息与原来失败的请求都能完整返回后,再恢复 url-test 或 fallback。若自动组恢复后问题重现,就有明确的对照:账号和规则没有变化,变化的是出口选择。
