本文章主要介绍笔者在使用 anyrouter 的 claude code 时出现:
Unable to connect to API (ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE)520 status code (no body)juayohuang.top | 520: Web server is returning an unknown error
等问题。最后一条报错的原因后续会介绍。
第一条是证书信任链或 SNI(服务器名称指示)配置不匹配,Node.js 认为连接不安全,直接切断了握手。常出现在 claude-code(客户端)想通过本地代理(7890)去连接 anyrouter(服务端)时
第二条就是经典的网络问题。有可能是:
- 代理不稳定
- 跳数过多:本地 => 代理服务器 => anyrouter CDN => claude code 服务器
- 链接超时
为解决以上问题,这里有几种可选择的方案,可以一起用,也可以单独用,取决于是否能解决您的问题。笔者全都用上了(哭)
配置 settings.json(最有效)
当你运行指令安装/更新claude code后,目录C:\Users\Alen\.claude会有一个settings.json文件,这是claude code运行时的默认配置。(环境变量高于此配置文件)
将内容修改为:
{
"env": {
"ANTHROPIC_BASE_URL": "anyrouter的base_url或者你自己搭建的流量中转站",
"ANTHROPIC_API_KEY": "your_api_key",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1 //核心
},
"permissions": {
"allow": [],
"deny": []
}
}
之后运行 claude code 尝试是否成功。
有人建议这么写,我没试过,不确保能用。但以上配置我确认是可以使用的。 “ANTHROPIC_BASE_URL”: “https://anyrouter.top”, “DISABLE_AUTOUPDATER”: “1”, “DISABLE_ERROR_REPORTING”: “1”, “DISABLE_TELEMETRY”: “1”, “HTTPS_PROXY”: “http://127.0.0.1:端口”, “HTTP_PROXY”: “http://127.0.0.1:端口”
SSL 证书问题
打开终端运行 claude code 后如果出现ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE。可在当前终端强制 Node.js 忽略 SSL 证书错误:
- Mac/Linux:
# 1. 设置允许不安全连接 export NODE_TLS_REJECT_UNAUTHORIZED=0 # 2. 确保代理设置正确(可选) export HTTPS_PROXY=http://127.0.0.1:7890 # 3. 运行 claude - Windows:(Powershell)
$Env:NODE_TLS_REJECT_UNAUTHORIZED="0" $Env:HTTPS_PROXY="http://127.0.0.1:7890"(可选) claude
配置个人流量中转站
Anyrouter 主站流量过大,有时(经常)网络不稳定会出现 502 等错误,因此可以选择自己搭建一个流量中转站来转发流量。本地使用代理站点的域名,而不是anyrouter的域名进行访问。
当然最主要的原因还是大陆这边网络容易被切断。anyrouter在美国,因此搭建一个海外流量站点,将流量转到香港比较方便国内访问。即 User => 代理站点 => anyrouter => claude code
笔者目前用的就是个人的代理站点来转发流量。搭建步骤如下。
申请域名
这一步是申请一个域名,防止站点由于域名污染而影响 Claude code 的使用。域名申请您决定,笔者用的是阿里云的。
使用 Vercel 搭建站点
不要使用 Cloudflare 搭建站点!!! Anyrouter 使用的就是 cloudflare,如果你的站点也使用的是 cloudflare 搭建(cloudflare 的 Workers),那么会导致路由无限回环和重定向风暴,报错 1102。
表现为:Error 1102 Worker exceeded resource limits 和访问 Vercle 部署的站点 url ,打开控制台可以看到 your_point.workers.dev 的请求不断”消失->出现”循环。
这不是因为服务器挂了,而是因为你搭建的cloudflare Worker 和 Cloudflare 之间陷入了死循环和重定向陷阱。
因此需要使用除 Cloudflare 以外的工具(如 Vercel)搭建站点。步骤如下。
Vercel 是 AWS 的
1. 项目准备
在 GitHub 上新建一个仓库,用来给 vercel 部署项目。仓库链接(供参考):https://github.com/JuyaoHuang/cloudflare-transpoint
项目结构:
cloudflare-transpoint
┣ api
┃ ┗ index.js
┗ vercel.json
核心文件为 index.js,项目结构一定要和这个完全相同。
// 文件路径: api/index.js
export const config = {
runtime: 'edge', // 必须开启 Edge Runtime 以支持流式传输
// regions: ['sin1'], // 可选:指定新加坡节点 (离国内近),或者不写让它自动选择
};
export default async function handler(request) {
const url = new URL(request.url);
// 1. 健康检查:防止浏览器直接访问报错
if (url.pathname === '/' || url.pathname === '/index.html') {
return new Response('AnyRouter Proxy on Vercel is Active.', {
status: 200,
headers: { 'Content-Type': 'text/plain' },
});
}
// 2. 上游地址配置
const UPSTREAM_HOST = 'c.cspok.cn';
const UPSTREAM_URL = `https://${UPSTREAM_HOST}`;
// 3. 构造转发 URL
const targetUrl = new URL(url.pathname + url.search, UPSTREAM_URL);
// 4. 请求头处理
const headers = new Headers(request.headers);
headers.set('Host', UPSTREAM_HOST);
headers.set('Referer', `https://${UPSTREAM_HOST}/`);
// 移除 Vercel 标记,防止被上游识别
headers.delete('x-vercel-id');
headers.delete('x-vercel-deployment-url');
headers.delete('x-forwarded-for');
headers.delete('x-real-ip');
try {
const response = await fetch(targetUrl, {
method: request.method,
headers: headers,
body: request.body,
redirect: 'manual',
});
return new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: response.headers,
});
} catch (e) {
return new Response(JSON.stringify({ error: e.message }), { status: 500 });
}
}
vercel.json:
{
"rewrites": [
{
"source": "/(.*)",
"destination": "/api/index.js"
}
]
}
创建好仓库后登录 Vercel 进行部署。
2. 添加二级域名
笔者域名使用 cloudflare 配置 DNS。一级域名用于个人博客:juayohuang.top,因此需要添加一个二级域名作为站点的域名。
如果不知道怎么用 cloudaflare 配置,参考这篇文章:https://www.juayohuang.top/posts/webfullstack/backend/deploy_web_in_vercel 或者上网自助。
在 cloudflare 的 DNS 记录里添加一条新纪录:
- 类型:CNAME
- 名称:自定(例如 abcd)
- 内容:cname.vercel-dns.com
- 代理状态 (Proxy status): 关闭 (变成灰色云朵,DNS Only)。
然后在新部署好的 Vercel 项目里 cloudflare_transpoint => Settings => Domains 添加你新申请的二级域名:abcd.juayohuang.top。
因为你在第一步已经设置了 CNAME 指向 Vercel 且关闭了 CF 代理(灰云),Vercel 应该能很快自动申请到 SSL 证书并显示两个绿色的勾。
浏览器访问 https://abcd.juayohuang.top,应该看到 “AnyRouter Vercel Proxy is Active”。
这样站点就配置好了
3.配置 settings.json
回到第一步的配置 settings.json,将 "ANTHROPIC_BASE_URL": "anyrouter的base_url或者你自己搭建的流量中转站",即可。