概述
AnyRouter 是一个运行在 Cloudflare Workers 上的通用 API 代理服务,可以转发任意 HTTP API 请求:
- 通用代理:支持任意 HTTP/HTTPS API,不限于 AI 服务
- 密钥管理:统一管理多个 API 密钥,通过短 ID 安全访问
- 直传模式:无需预先配置,直接传递 Token 即可使用
- 边缘加速:基于 Cloudflare 全球边缘网络,低延迟访问
- 请求统计:记录使用量,支持按 API 和 Key 统计
支持的 API
AnyRouter 支持任意 HTTP API,以下是常用的 AI 服务示例:
api.openai.com
api.anthropic.com
generativelanguage.googleapis.com
xxx.openai.azure.com
api.groq.com
api.mistral.ai
api.cohere.ai
任意 HTTP API
只要是标准的 HTTP/HTTPS API,都可以通过 AnyRouter 代理访问,不限于上述服务。
快速开始
1. 获取代理地址
当前服务地址:
2. 设置认证信息
在请求头中添加 Authorization 字段,格式如下:
认证格式
Authorization: Bearer <目标API地址>:<Key ID 或 Token>
格式说明
- • 目标API地址:完整的 API 地址,如
https://api.openai.com - • Key ID:6 位字母数字组合,用于从数据库查找对应的 Token
- • Token:直接传递完整的 API Token(直传模式)
各平台示例
Bearer https://api.openai.com:a3x9k2
Bearer https://api.anthropic.com:b4y8m1
Bearer https://generativelanguage.googleapis.com:c5z2n3
Bearer https://api.groq.com:d6w4p5
使用模式
SK 别名模式
使用类似 OpenAI 格式的 SK 别名,一键访问
Bearer sk-ar-xxxxxxxx...
- 类似原生 API Key 格式
- 不暴露真实 Token
- 自动识别目标 API
- 可随时重新生成
Key ID 模式
使用 6 位短 ID + URL 访问预配置的密钥
Bearer https://api.openai.com:a3x9k2
- 不暴露真实 Token
- 支持使用统计
- 可随时启用/禁用
直传模式
直接在请求中传递 API Token
Bearer https://api.openai.com:sk-xxx...
- 即用即走,无需配置
- 支持任意 API 地址
- 临时使用场景
模式自动判断
系统会根据 Authorization 内容自动判断模式:
- •
sk-ar-xxx开头 → SK 别名模式(自动匹配目标 API) - • URL 后跟 6 位字母数字(如
https://...:a3x9k2)→ Key ID 模式 - • URL 后跟其他格式(如
https://...:sk-xxx)→ 直传模式
SK 别名详解
SK 别名是 AnyRouter 独创的认证方式,格式类似各大平台的 API Key:
- OpenAI:
sk-proj-xxx - Anthropic:
sk-ant-xxx - AnyRouter:
sk-ar-xxx
- 在管理面板点击「生成」获取 SK 别名
- 直接用
sk-ar-xxx作为 API Key - 无需指定目标 API URL
代码示例
cURL - OpenAI
curl -X POST '/v1/chat/completions' \
-H 'Authorization: Bearer https://api.openai.com:a3x9k2' \
-H 'Content-Type: application/json' \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello!"}]
}'
cURL - Anthropic
curl -X POST '/v1/messages' \
-H 'Authorization: Bearer https://api.anthropic.com:b4y8m1' \
-H 'Content-Type: application/json' \
-H 'anthropic-version: 2023-06-01' \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'
cURL - Google AI (Gemini)
curl -X POST '/v1beta/models/gemini-pro:generateContent' \
-H 'Authorization: Bearer https://generativelanguage.googleapis.com:c5z2n3' \
-H 'Content-Type: application/json' \
-d '{
"contents": [{"parts": [{"text": "Hello!"}]}]
}'
Python - OpenAI SDK
from openai import OpenAI
client = OpenAI(
base_url='/v1',
api_key='https://api.openai.com:a3x9k2'
)
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
Python - Anthropic SDK
import anthropic
client = anthropic.Anthropic(
base_url='',
api_key='https://api.anthropic.com:b4y8m1'
)
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}]
)
print(message.content[0].text)
Python - Groq SDK
from groq import Groq
client = Groq(
base_url='/openai/v1',
api_key='https://api.groq.com:d6w4p5'
)
response = client.chat.completions.create(
model="llama-3.1-70b-versatile",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
JavaScript - fetch
const response = await fetch('/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer https://api.openai.com:a3x9k2',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-4',
messages: [{ role: 'user', content: 'Hello!' }]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
SDK / CLI 配置
通过环境变量配置各种 SDK 和 CLI 工具使用本代理服务:
SK 别名模式(推荐)
使用 SK 别名最简洁,无需指定目标 API URL:
# Claude Code / Anthropic SDK
export ANTHROPIC_BASE_URL=
export ANTHROPIC_AUTH_TOKEN=sk-ar-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# OpenAI SDK
export OPENAI_BASE_URL=/v1
export OPENAI_API_KEY=sk-ar-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
在管理面板的配置列表中点击「生成」按钮获取你的 SK 别名
Claude Code CLI(Key ID 模式)
export ANTHROPIC_BASE_URL=
export ANTHROPIC_AUTH_TOKEN=https://api.anthropic.com:b4y8m1
OpenAI CLI / SDK(Key ID 模式)
export OPENAI_BASE_URL=/v1
export OPENAI_API_KEY=https://api.openai.com:a3x9k2
通用配置模式
# SK 别名模式(最简洁)
export {SDK}_BASE_URL=
export {SDK}_API_KEY=sk-ar-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Key ID 模式
export {SDK}_BASE_URL=
export {SDK}_API_KEY=https://{目标API地址}:{KeyID}
配置说明
- • SK 别名模式:最简洁,只需一个
sk-ar-xxx即可,系统自动识别目标 API - • Key ID 模式:需要指定 URL 和 6 位 Key ID,适合需要明确指定目标的场景
- • 环境变量可以添加到
~/.bashrc、~/.zshrc或项目的.env文件
错误处理
当请求出错时,API 会返回结构化的错误信息:
{
"error": {
"code": "NOT_FOUND",
"message": "Key ID 不存在",
"hint": "找不到 Key ID \"abc123\",请检查是否输入正确",
"contact": "如有疑问请联系管理员"
}
}
| 错误码 | HTTP 状态 | 说明 |
|---|---|---|
UNAUTHORIZED |
401 | 缺少或无效的 Authorization header |
BAD_REQUEST |
400 | 请求格式错误 |
NOT_FOUND |
404 | API 地址未配置或 Key ID 不存在 |
FORBIDDEN |
403 | Key 已被禁用 |
SERVICE_ERROR |
503 | 无法连接到目标 API |
部署指南
选择以下任一方式部署你的 AnyRouter 代理服务:
准备工作
3 配置 Supabase 数据库(可选)
如果只需要直传模式,可跳过此步骤
- a. 登录 Supabase 并创建新项目
- b. 进入 SQL Editor,执行数据库初始化脚本:
-
c.
进入 Settings → API,获取
Project URL和anon/public key
4 配置 Upstash Redis(可选)
如果不需要统计和缓存功能,可跳过此步骤
- a. 登录 Upstash 并创建 Redis 数据库
- b. 选择离你最近的区域(如 US-East-1 或 AP-Northeast-1)
-
c.
在 REST API 标签页复制
UPSTASH_REDIS_REST_URL和UPSTASH_REDIS_REST_TOKEN
5 配置环境变量
部署后在 Cloudflare Dashboard → Workers → 你的 Worker → Settings → Variables and Secrets 添加:
| 变量名 | 必须 | 说明 | 获取方式 |
|---|---|---|---|
ADMIN_PASSWORD |
✓ | 管理面板登录密码 | 自定义 |
SUPABASE_URL |
可选 | Supabase 项目 URL | Supabase → Settings → API → Project URL |
SUPABASE_KEY |
可选 | Supabase anon key | Supabase → Settings → API → anon public |
UPSTASH_REDIS_URL |
可选 | Upstash Redis REST URL | Upstash → Redis → REST API |
UPSTASH_REDIS_TOKEN |
可选 | Upstash Redis Token | Upstash → Redis → REST API |
不配置 Supabase/Redis 也可使用直传模式
6 配置自定义域名(可选)
- a. 登录 Cloudflare Dashboard,进入 Workers & Pages
- b. 选择你的 Worker,点击 Settings → Triggers → Custom Domains
- c. 添加你的域名(域名需要已添加到 Cloudflare)
部署后检查清单
- 访问
/查看状态页面 - 访问
/admin登录管理面板 - 添加 API 配置并测试代理功能
- 生成 SK 别名用于 SDK 配置
常见问题
Q: 如何获取 Key ID?
登录管理面板,添加 API 配置后系统会自动生成 6 位 Key ID。
Q: 支持哪些 API?
支持任意 HTTP/HTTPS API,包括但不限于:OpenAI、Anthropic、Google AI、Azure OpenAI、Groq、Mistral、Cohere、HuggingFace 等。
Q: 数据安全吗?
代理服务不会存储任何请求内容,仅转发请求。API Token 存储在数据库中,传输使用 HTTPS 加密。
Q: 如何自己部署?
Fork GitHub 仓库,配置 Cloudflare Workers 和 Supabase 数据库即可。详见仓库 README。
Q: 有请求限制吗?
代理服务本身无限制,但会受到 Cloudflare Workers 免费版的限制(每日 10 万请求)和目标 API 的限制。
Q: 为什么要用代理而不是直连?
1) 统一管理多个 API 密钥;2) 避免在客户端暴露 Token;3) 利用 Cloudflare 边缘网络加速;4) 便于监控和统计使用量。