Innatus

本心自昭

NewAPI 对接 OpenClaw

发布于 # 笔记

背景与结论(先说人话)

现象:

结论(根因):

这类问题的特点是:你怎么换模型都 403,但你一改 UA 就通。


1. 复现与定位思路

1.1 复现症状

1.2 定位路径(推荐顺序)

  1. 先用 curl 直连 OpenClaw Gateway(排除通道/机器人问题)
  2. 若仍 403:怀疑 provider 侧拦截(WAF/反爬/风控)
  3. 重点检查/覆盖 User-Agent

2. 修复方案:在 provider 上加 headers 覆盖 User-Agent

核心做法:在 openclaw.jsonmodels.providers.<provider> 里加 headers 字段。

2.1 脱敏后的参考配置(骨架)

说明:

{
  "agents": {
    "defaults": {
      "workspace": "/home/ubuntu/.openclaw/workspace",
      "model": {
        "primary": "newapi/model-y",
        "fallbacks": []
      }
    }
  },
  "tools": {
    "profile": "coding"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "session": {
    "dmScope": "per-channel-peer"
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "appId": "cli_***REDACTED***",
      "appSecret": "***REDACTED***",
      "connectionMode": "websocket",
      "domain": "feishu",
      "groupPolicy": "open"
    }
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "YOUR_GATEWAY_TOKEN"
    }
  },
  "models": {
    "mode": "merge",
    "providers": {
      "newapi": {
        "baseUrl": "https://YOUR_NEWAPI_DOMAIN/v1",
        "apiKey": "YOUR_NEWAPI_API_KEY",
        "auth": "api-key",
        "api": "openai-completions",
        "models": [
          {
            "id": "model-y",
            "name": "model-y"
          }
        ],
        "headers": {
          "User-Agent": "OpenClaw/2026.3"
        }
      }
    }
  }
}

2.2 为什么这招有效

如果 provider/WAF 针对某些 UA 做了策略(拦截、挑战、降权),那就会出现:

这时在 OpenClaw provider 侧显式设置 headers.User-Agent,等价于“让请求看起来不像被拦的那类客户端”。


3. 执行步骤(最短闭环)

3.1 修改配置

nano ~/.openclaw/openclaw.json

在你的 models.providers.newapi 下增加/修改:

"headers": {
  "User-Agent": "OpenClaw/2026.3"
}

3.2 重启 Gateway

openclaw gateway restart

3.3 用 curl 验证(建议永远保留这一步)

curl http://localhost:18789/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_GATEWAY_TOKEN" \
  -d '{
    "model": "newapi/model-y",
    "messages": [{"role": "user", "content": "hello"}],
    "stream": true
  }'

预期:


4. 可选:更像浏览器的 User-Agent

如果 OpenClaw/2026.3 仍被拦,可以试更“浏览器化”的 UA(同样不需要泄露任何敏感信息):

"headers": {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
}

5. 经验总结(写给未来的自己)

6. 脱敏规范(强制)

这类笔记/截图/日志对外分享前,必须隐藏:

统一替换成: