OpenRouter

I OpenRouter

由 OpenRouter 提供 API Key.

II Deno Deploy

在 Deno Deploy部署了一个二次转发节点:
点击New Playground,在出现的代码框中写入:

Deno.serve(async (request) => {
  const url = new URL(request.url);
  let path = url.pathname;

  // 智能补全 Claude Code 需要的路径
  if (path.endsWith("/messages")) path = "/api/v1/messages";
  else if (!path.startsWith("/api/v1")) path = "/api/v1" + path;

  // 目标直接锁定 OpenRouter
  const targetUrl = `https://openrouter.ai${path}`;
  const headers = new Headers(request.headers);

  // 致命杀招:彻底抹除一切可能暴露真实地理位置的 Header
  headers.delete("x-forwarded-for");
  headers.delete("x-real-ip");
  headers.delete("cf-connecting-ip");

  // 兼容 Claude Code 发送的 API Key
  const auth = headers.get("x-api-key");
  if (auth) headers.set("authorization", `Bearer ${auth}`);

  return fetch(targetUrl, {
    method: request.method,
    headers,
    body: request.body
  });
});


写入之后,点击Deploy,就会得到一个二级域名(以下记作xxx.deno.net),这个域名就是我们访问 OpenRouter API 的入口了。

Free Plan, 每月 10, 000k 次请求

Important

此时已经可以通过 xxx.deno.net 这个地址访问 OpenRouter 的 API 了,但由于 Deno Deploy 的服务器在国外,访问速度可能不太稳定,所以我们还需要一个国内的中转结点。
如果想要直接通过这个域名调用大模型,这里以Claude Code为例(已经测试通过Claude Opus 4.6):
设置临时环境变量(powershell语法

$env:ANTHROPIC_AUTH_TOKEN=""
$env:ANTHROPIC_BASE_URL="xxx.deno.net"
$env:ANTHROPIC_API_KEY="sk-or-v1..."
$env:ANTHROPIC_MODEL="anthropic/claude-opus-4.6"
$env:ANTHROPIC_DEFAULT_OPUS_MODEL="anthropic/claude-opus-4.6"
$env:ANTHROPIC_DEFAULT_SONNET_MODEL="anthropic/claude-sonnet-4.6"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL="anthropic/claude-haiku-4.5"
$env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"

然后启动 Claude Code 即可正常使用。
但是这里有一个问题:Gemini, GPT无法使用,暂时不清楚原因。

III Cloudflare Worker

Build/Compute/Worker&Pages界面,点击Create application,选择Start with hello world,进入编辑界面,为你的 worker 起一个名字,然后替换默认代码为以下代码,点击Deploy部署

export default {
  async fetch(request) {
    const url = new URL(request.url);

    // 🔥 将这里的网址替换成你刚才在 Deno 生成的真实域名 🔥
    // 注意:保留 https://,且结尾不要带斜杠
    const denoUrl = "xxx.deno.net"; 

    // 拼装最终发送给 Deno 的地址
    const targetUrl = `${denoUrl}${url.pathname}${url.search}`;

    // Cloudflare 只做国内加速的搬运工,什么头都不改,原封不动发给 Deno
    return fetch(new Request(targetUrl, request));
  }
};

接下来需要绑定域名,在 Settings 界面,Domains & Routes 这一栏,留意它的右侧或下方,会有一个 "+ Add" 或者 "Add Custom Domain" (添加自定义域) 的按钮。
点击它,在弹出的输入框中填入你想要的子域名,比如:api.example.com
点击 "Add domain" (添加域) 进行确认。

!!! note '提示'
example.com 域名原本就托管在 Cloudflare,系统会自动帮你添加 DNS 解析记录并配置好 SSL 证书。
如果此前没有域名,Cloudflare 也提供免费的二级域名,直接使用 xxx.workers.dev 这样的地址也是完全没问题的。

Bug

依旧无法在 Claude Code 中使用 GeminiGPT 模型,怀疑是 Claude Code 这边对返回的响应做了某些处理,导致无法正确解析响应中的模型列表。
通过curl.exe https://api.example.com/api/v1/models -H "Authorization: Bearer sk-or-v1-...",可以清楚OpenRouter的 API 确实返回了完整的模型列表




Enjoy Reading This Article?

Here are some more articles you might like to read next: