[{"data":1,"prerenderedAt":298},["ShallowReactive",2],{"\u002F2026\u002F20260801":3,"surround-\u002F2026\u002F20260801":287},{"id":4,"title":5,"body":6,"categories":261,"date":263,"description":264,"draft":265,"extension":266,"image":267,"meta":268,"navigation":270,"path":271,"permalink":272,"published":272,"readingTime":273,"recommend":272,"references":272,"seo":278,"sitemap":279,"stem":280,"tags":281,"type":284,"updated":285,"__hash__":286},"content\u002Fposts\u002F2026\u002F20260801.md","cc接入any时Unable to connect to API 的排查",{"type":7,"value":8,"toc":254},"minimark",[9,13,24,27,30,46,61,66,69,75,78,86,89,97,100,118,121,127,130,134,137,143,146,152,155,161,164,170,177,183,186,193,196,202,205,208,216,223,229,236,242,248,251],[10,11,12],"p",{},"最近any的国内站点好像因为没有续费无法请求了，于是就只能用主站链接，可是发现系统已经开启了全局代理，浏览器能访问网站，PowerShell 也能请求接口。但 Claude Code 发出消息后通常会等待很久最终报出：",[14,15,21],"pre",{"className":16,"code":18,"language":19,"meta":20},[17],"language-text","API Error: Unable to connect to API (UNKNOWN_CERTIFICATE_VERIFICATION_ERROR)\n","text","",[22,23,18],"code",{"__ignoreMap":20},[10,25,26],{},"中间尝试在配置文件里修改代理出口等等，甚至连clash也升级了一下，发现都不奏效。",[10,28,29],{},"鉴于any本身响应很慢，所以借助AI排查时需要区分两类请求：",[31,32,33,40],"ul",{},[34,35,36,39],"li",{},[22,37,38],{"code":38},"\u002Fv1\u002Fmodels","：用于验证域名、代理和鉴权，通常应在几十秒内返回。",[34,41,42,45],{},[22,43,44],{"code":44},"\u002Fv1\u002Fmessages"," 或 Claude Code 实际对话：用于验证模型调用，应至少预留 120 秒超时。",[10,47,48,49,52,53,56,57,60],{},"如果模型请求长时间无响应，但最终返回了 ",[22,50,51],{"code":51},"503","、",[22,54,55],{"code":55},"429"," 或正常内容，说明请求已经到达 AnyRouter；如果最终是 ",[22,58,59],{"code":59},"UNKNOWN_CERTIFICATE_VERIFICATION_ERROR","，则应优先检查本机的 TLS 信任链。",[62,63,65],"h2",{"id":64},"第一层验证anyrouter-配置和鉴权","第一层验证：AnyRouter 配置和鉴权",[10,67,68],{},"Claude Code 的用户配置位于：",[14,70,73],{"className":71,"code":72,"language":19,"meta":20},[17],"C:\\Users\\\u003C用户名>\\.claude\\settings.json\n",[22,74,72],{"__ignoreMap":20},[10,76,77],{},"核心配置如下：",[14,79,84],{"className":80,"code":82,"language":83,"meta":20},[81],"language-json","{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"https:\u002F\u002Fanyrouter.top\",\n    \"ANTHROPIC_AUTH_TOKEN\": \"xxx\",\n    \"ANTHROPIC_BETAS\": \"context-1m-2025-08-07\"\n  }\n}\n","json",[22,85,82],{"__ignoreMap":20},[10,87,88],{},"使用 PowerShell 验证 AnyRouter 的 Anthropic 兼容接口：",[14,90,95],{"className":91,"code":93,"language":94,"meta":20},[92],"language-powershell","$headers = @{\n  Authorization = \"Bearer \u003CAnyRouter API Key>\"\n  \"anthropic-version\" = \"2023-06-01\"\n}\n\nInvoke-RestMethod `\n  -Uri \"https:\u002F\u002Fanyrouter.top\u002Fv1\u002Fmodels\" `\n  -Headers $headers `\n  -Method Get\n","powershell",[22,96,93],{"__ignoreMap":20},[10,98,99],{},"模型列表可以正常返回，说明：",[101,102,103,109,112,115],"ol",{},[34,104,105,108],{},[22,106,107],{"code":107},"https:\u002F\u002Fanyrouter.top"," 可以访问。",[34,110,111],{},"API Key 可用。",[34,113,114],{},"AnyRouter 使用 Bearer 鉴权。",[34,116,117],{},"Anthropic 兼容接口本身正常。",[10,119,120],{},"模型映射应使用接口返回的实际模型 ID，例如：",[14,122,125],{"className":123,"code":124,"language":83,"meta":20},[81],"{\n  \"ANTHROPIC_DEFAULT_OPUS_MODEL\": \"claude-opus-5\",\n  \"ANTHROPIC_DEFAULT_SONNET_MODEL\": \"claude-sonnet-4-5-20250929\",\n  \"ANTHROPIC_DEFAULT_HAIKU_MODEL\": \"claude-haiku-4-5-20251001\",\n  \"ANTHROPIC_DEFAULT_FABLE_MODEL\": \"claude-fable-5\",\n  \"CLAUDE_CODE_SUBAGENT_MODEL\": \"claude-opus-5\"\n}\n",[22,126,124],{"__ignoreMap":20},[10,128,129],{},"不直接使用控制台页面里看见的展示名称作为模型 ID。",[62,131,133],{"id":132},"第二层验证windows-代理本身没有问题","第二层验证：Windows 代理本身没有问题",[10,135,136],{},"我的 FlClash 代理运行在：",[14,138,141],{"className":139,"code":140,"language":19,"meta":20},[17],"http:\u002F\u002F127.0.0.1:7890\n",[22,142,140],{"__ignoreMap":20},[10,144,145],{},"可以用以下命令确认 Windows 的代理设置：",[14,147,150],{"className":148,"code":149,"language":94,"meta":20},[92],"Get-ItemProperty `\n  -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\" |\n  Select-Object ProxyEnable, ProxyServer\n",[22,151,149],{"__ignoreMap":20},[10,153,154],{},"接着让 curl 显式通过代理访问 AnyRouter：",[14,156,159],{"className":157,"code":158,"language":94,"meta":20},[92],"curl.exe `\n  --proxy http:\u002F\u002F127.0.0.1:7890 `\n  -sS -o NUL `\n  -w \"http=%{http_code} verify=%{ssl_verify_result}`n\" `\n  https:\u002F\u002Fanyrouter.top\u002Fv1\u002Fmodels\n",[22,160,158],{"__ignoreMap":20},[10,162,163],{},"得到的结果类似：",[14,165,168],{"className":166,"code":167,"language":19,"meta":20},[17],"http=401 verify=0\n",[22,169,167],{"__ignoreMap":20},[10,171,172,173,176],{},"这里的 ",[22,174,175],{"code":175},"401"," 是预期结果，因为 curl 请求没有提供 API Key；真正重要的是：",[14,178,181],{"className":179,"code":180,"language":19,"meta":20},[17],"verify=0\n",[22,182,180],{"__ignoreMap":20},[10,184,185],{},"它表示 TLS 证书校验成功。也就是说，在 curl 的运行环境中，FlClash、代理端口和到 AnyRouter 的 HTTPS 链路都没有问题。",[10,187,188,189,192],{},"但这一步并不能证明 Claude Code 也一定能成功。",[22,190,191],{"code":191},"curl","、PowerShell 和 Claude Code 插件不是同一个进程，也不使用完全相同的网络配置来源。",[62,194,195],{"id":195},"水落石出",[10,197,198,199,201],{},"我继续做了两个对照。首先，使用 PowerShell 携带 AnyRouter 的 Bearer Token 请求 ",[22,200,38],{"code":38},"，可以正常获取模型列表。这排除了 API 地址错误、密钥失效，以及所有应用都无法通过代理访问 AnyRouter的可能。",[10,203,204],{},"但 Claude Code 插件仍然在等待较长时间后报UNKNOWN_CERTIFICATE_VERIFICATION_ERROR",[10,206,207],{},"到这里，问题范围被收窄为两种运行环境之间的差异：",[31,209,210,213],{},[34,211,212],{},"PowerShell \u002F curl可走系统代理，可验证证书，可访问 AnyRouter",[34,214,215],{},"Claude Code 插件请求失败，UNKNOWN_CERTIFICATE_VERIFICATION_ERROR",[10,217,218,219,222],{},"接下来确认 Claude Code 并不是复用 PowerShell 或 curl，而是使用 VS Code 插件自带的 ",[22,220,221],{"code":221},"claude.exe","。这意味着它有独立的运行时和环境变量继承路径。即使 Windows 已经设置全局代理，也不能假设该进程一定会读取同一份代理配置或使用同一套系统 CA。因此没有直接关闭 TLS 校验，而是把 Claude Code 所需的两个前提显式写入配置：",[14,224,227],{"className":225,"code":226,"language":83,"meta":20},[81],"{\n  \"HTTP_PROXY\": \"http:\u002F\u002F127.0.0.1:7890\",\n  \"HTTPS_PROXY\": \"http:\u002F\u002F127.0.0.1:7890\",\n  \"NODE_OPTIONS\": \"--use-system-ca\"\n}\n",[22,228,226],{"__ignoreMap":20},[10,230,231,232,235],{},"前两项让 Claude Code 明确走 FlClash；",[22,233,234],{"code":234},"--use-system-ca"," 则要求其内置 Node 运行时使用 Windows 系统证书库。",[10,237,238,239,241],{},"最后的验证也没有再使用 curl，而是直接调用插件目录中的 ",[22,240,221],{"code":221}," 发起模型请求：",[14,243,246],{"className":244,"code":245,"language":94,"meta":20},[92],"& $claudeExe `\n  --model opus `\n  --output-format text `\n  --print \"Reply with OK only.\"\n",[22,247,245],{"__ignoreMap":20},[10,249,250],{},"最终终于返回OK。这一步说明：在显式指定代理并启用系统 CA 后，Claude Code 已能完成 HTTPS 连接、证书校验和模型调用。",[10,252,253],{},"综上所述，严格来说同时处理了代理没有继承和系统 CA 未使用两个变量，因此不能仅凭一次结果断言唯一根因就是 CA。更准确的结论是Claude Code 的独立运行时没有正确继承当前 Windows 的网络信任环境，显式提供代理配置和系统 CA 后，问题得到解决。",{"title":20,"searchDepth":255,"depth":255,"links":256},4,[257,259,260],{"id":64,"depth":258,"text":65},2,{"id":132,"depth":258,"text":133},{"id":195,"depth":258,"text":195},[262],"技术","2026-08-01 19:03","一次排查记录。",false,"md","\u002Fimages\u002F2026\u002F20260801-哆啦A梦-1785583252863.jpg",{"slots":269},{},true,"\u002F2026\u002F20260801",null,{"text":274,"minutes":275,"time":276,"words":277},"6 min read",5.34,320400,1068,{"title":5,"description":264},{"loc":271},"posts\u002F2026\u002F20260801",[282,283],"bug","排查","tech","2026-08-01 19:27","8ZLx1UNNS-bXvMCmYjkZsvLpUVSCGXYwx4TwXWYwFjs",[288,293],{"title":289,"path":290,"stem":291,"date":292,"type":284,"children":-1},"生图","\u002F2026\u002F20260515","posts\u002F2026\u002F20260515","2026-05-15 01:00",{"title":294,"path":295,"stem":296,"date":297,"type":284,"children":-1},"测试","\u002F2026","posts\u002F2026\u002F测试","2026-07-30 23:41",1785583699220]