将真实浏览器变成本地 API:web-model 项目解析
如果有一种方式,能让你直接调用已经登录好的 Kimi、ChatGPT 等 AI 对话页面,不需要任何 API Key,不需要破解逆向,只需要一个 Chrome 扩展和本地服务?那就是 web-model。
它能做什么
web-model 是一个轻量级本地服务器,配合 Chrome/Edge MV3 扩展使用。它的核心思路非常巧妙:不逆向任何 API,而是让真实的浏览器标签页来响应请求。
技术架构很清晰:
your app / script
|
v
web-model server (本地)
|
v
Chrome 扩展 (bridge)
|
v
真实浏览器标签页 (已登录)
|
v
AI 提供商网站
服务器提供标准的 OpenAI 兼容接口:
- GET /v1/models - 列出当前注册的标签页
- POST /v1/chat/completions - 发起对话(支持流式)
- GET /healthz - 健康检查
- GET /providers - 查看支持的提供商
快速上手
第一步:下载并启动服务
tar -xzf macos-amd64-all.tgz
cd macos-amd64
./web-model
默认监听 http://127.0.0.1:18080,WebSocket 接口在 ws://127.0.0.1:18080/ws。
第二步:加载浏览器扩展
将包内的 extension/ 目录作为未打包扩展加载到 Chrome 或 Edge。
第三步:在扩展 popup 中配置
- Server URL 填
ws://127.0.0.1:18080/ws - 启用当前标签页
- 打开想要作为 API 使用的 AI 对话页面(需要预先手动登录、解决验证码等)
扩展图标状态说明:
- 绿色 ON:已注册
- 黄色 ...:连接中/等待
- 红色 !:出错
- 空白:未启用
第四步:调用 API
# 列出可用模型
curl http://127.0.0.1:18080/v1/models
# 对话请求(随机选一个空闲标签)
curl http://127.0.0.1:18080/v1/chat/completions \
-H content-type: application/json \
-d "{\"model\": \"kimi-tab-xxx\", \"messages\": [{\"role\": \"user\", \"content\": \"hello\"}]}"
# web-model 内置 quick 子命令
./web-model quick kimi "hi"
./web-model quick --stream chatgpt "hello world"
路由策略与错误处理
model 参数支持三种形式:
- 精确匹配:
kimi-tab-2123080689直接指定某标签 - 通配符:
kimi*匹配所有 Kimi 类型标签,随机选一个 - 全匹配:
*随机选任意空闲标签
错误惩罚机制:当某个标签页返回对话错误,该标签会被标记 1 分钟惩罚窗口,期间通配符路由会跳过它。
支持的提供商
官方支持:ChatGPT、Qwen(通义千问)、Gemini、Kimi、元宝。
适合的场景
- 开发者本地调试,不想暴露 API Key
- 个人使用已付费账号,避免额外计费
- 测试特定账号/登录状态的 AI 对话
- 快速验证 OpenAI 兼容代码,不需要真实 API
不适合的场景
- 大规模生产环境(依赖浏览器,可靠性有限)
- 需要高并发(浏览器标签页有限)
- 自动化脚本(页面刷新需要手动重连)
总结
web-model 是一个很有创意的工具,特别适合本地开发调试、个人 AI 助手聚合、快速验证 OpenAI 兼容代码。
如果你有已经付费的 ChatGPT/Kimi/元宝账号,又想在本地脚本里方便地调用,web-model 是一个值得一试的方案。项目 MIT 协议。