google-ai-mode

google-ai-mode

Provides OpenAI-compatible API, MCP, and CLI for Google AI Mode, with automatic fallback to a real Chrome browser to bypass TLS fingerprint detection.

Category
访问服务器

README

google-ai-mode

本地调用 Google AI Mode(udm=50),提供 OpenAI 兼容 API、MCP 与 CLI。

双层请求引擎:curl_cffi(快速路径)→ 被 TLS 指纹检测拦截时自动回退到真实 Chrome 浏览器(CDP 连接),绕过 Google SG_REL soft-block。

违反 Google ToS,仅供个人研究。上游随时可能改协议。

文档导航

文档 内容
README.md 安装、配置、启动、OpenAI 用法
DESIGN.md 模块划分与数据流
docs/PROTOCOL.md 抓包路径 / folwr·folif / cookie / 风控(接手必读)
docs/REFERENCES.md 外部参考(精简)

快速开始

1. 安装

cd google-ai-mode
python -m venv .venv
.venv\Scripts\activate
pip install -e ".[api]"

可选依赖(浏览器回退需要):

pip install playwright
playwright install chromium

2. 配置

copy config.example.json ai-mode.config.json
{
  "cookie_file": "cookies.json",
  "proxy": "http://127.0.0.1:10808",
  "host": "www.google.com",
  "bind_host": "127.0.0.1",
  "port": 18080,
  "verbose": false
}

优先级:环境变量 > 配置文件 > 默认值。 也支持 config.json / .ai-mode.json,或 AI_MODE_CONFIG=路径

3. 导出 Cookies

Chrome 没有「全选 → Copy as JSON」。用 Cookie-Editor:

  1. 安装 Cookie-Editor
  2. 登录 https://www.google.com
  3. Export → JSON(数组格式即可)
  4. 放到项目根,命名 cookies.json

加载时只读每条的 name + value,多余字段无妨。

最少需要:

Cookie 说明
__Secure-1PSID 长期登录
__Secure-1PSIDTS 短期签名;会尝试 RotateCookies

只保证 PSID 不过期不够。建议全量导出 SID/HSID/APISID 等。

4. 启动 API

推荐:双击项目根 start-api.bat(先 cd 到根再启,窗口保持开着)。 停止:双击 stop-api.bat(读配置里的 port,结束占用进程;默认 18080)。

ai-mode-api
# 或
.venv\Scripts\ai-mode-api.exe
curl --noproxy "*" http://127.0.0.1:18080/health

Cherry Studio / 任意 OpenAI 客户端:

base_url = http://127.0.0.1:18080/v1
model    = google-ai-mode
API Key  = 任意非空占位即可

双层请求引擎

请求 → curl_cffi (impersonate=chrome*)  ─── 快速路径
         │
         ├─ 200 + AI Mode tokens → 正常返回
         │
         └─ SG_REL soft-block → 自动回退
                                   │
                                   ▼
                        BrowserBridge (真实 Chrome via CDP)
                          ├─ 启动 Chrome + 代理 + cookies
                          ├─ 预热首页 (关键:直接访搜索页会被 /sorry 拦截)
                          ├─ page.goto() → 搜索页 → 解析 tokens
                          └─ fetch() → /async/folif → AI 回答

为什么需要浏览器回退?

Google 于 2026 年升级了 TLS/HTTP2 指纹检测。curl_cffi 的所有 impersonate profile(chrome131~146)均被识别为自动化流量,返回 SG_REL soft-block(HTTP 200 但无 AI Mode tokens)。

真实 Chrome 浏览器的 TLS 指纹无法被 Google 拦截(因为就是真实浏览器)。通过 CDP(Chrome DevTools Protocol)连接到 Chrome 进程不会注入 navigator.webdriver 等自动化标志,因此可以绕过检测。

浏览器回退的关键细节

  • 预热必须:直接导航到 /search 会被重定向到 /sorry/index;必须先访问首页再搜索
  • Playwright headless 无效:Playwright 控制的浏览器(即使 channel="chrome")仍被检测
  • subprocess + CDP 有效:用 subprocess 启动 Chrome,再通过 CDP 连接,不注入自动化标志

OpenAI 兼容

curl --noproxy "*" -X POST "http://127.0.0.1:18080/v1/chat/completions" ^
  -H "Content-Type: application/json" ^
  -d "{\"model\":\"google-ai-mode\",\"stream\":false,\"messages\":[{\"role\":\"user\",\"content\":\"hello\"}]}"
  • GET /v1/models
  • POST /v1/chat/completionsstream=false|true;流式为真渐进 SSE:chunked HTML → 稳定 MD 前缀 → delta)
  • 另有:GET /searchPOST /v1/chatPOST /rotateGET /health

system 消息

上游无 system 角色。role=system 会被忽略,只取最后一条 user 文本发给 Google。

多轮(无需 thread_id)

客户端只传标准 messages 历史即可。服务端用 assistant 正文指纹 + user 问题映射 + .ai_mode_threads.json 落盘自动挂 Google thread。

错误码(OpenAI error 体)

code HTTP 处理
cookie_expired 401 从 Chrome 重导 cookies.json
rate_limit 429 冷却 1–5 分钟
soft_block 503 引擎已自动回退到浏览器模式;若仍失败,刷新 cookies/换代理
blocked 403 换 IP、人工过验证后重导 cookie
incomplete_answer 502 上游答案结构不完整,服务已自动重试仍失败
bootstrap_tokens / upstream_http 502 查网络/host/登录态
internal_error 500 看服务端日志

核心原理

GET /search?udm=50  → tokens (stkp / garc / xsrf_folif / srtst / ei)
GET /async/folwr    → 首答 HTML + mstk  (legacy, 已弃用)
GET /async/folif    → 首答/续聊 HTML + mstk  (当前协议)
HTML → Markdown([[cite](url)] + Images)

Google ~2026-08 移除了 data-lro-token / data-lro-signature,弃用 /async/folwr。新对话也改用 /async/folif

项目结构

google-ai-mode/
├── ai-mode.config.json     # 本地配置(gitignore,从 example 复制)
├── config.example.json
├── cookies.example.json
├── start-api.bat           # Windows 推荐启动
├── stop-api.bat            # 按配置端口结束 API
├── DESIGN.md
├── docs/
│   ├── PROTOCOL.md         # 协议与逆向结论
│   └── REFERENCES.md
├── scripts/
│   ├── build_cookies.py
│   └── extract-cookies.js
├── tests/
│   ├── test_answer_structure.py
│   ├── test_stream_delta.py
│   └── test_thread_store.py
└── src/ai_mode_mcp/
    ├── config.py
    ├── cookie_manager.py
    ├── browser_backend.py   # 浏览器回退:真实 Chrome via CDP
    ├── engine.py            # 协议 + 解析 + Markdown + 线程 + 流式
    ├── models.py
    ├── cli.py
    └── handlers/
        ├── api_server.py    # FastAPI / OpenAI
        └── mcp_server.py

MCP / CLI

ai-mode-mcp          # stdio:search / chat / rotate_cookies
ai-mode-cli "query" -c cookies.json -v

常见问题

Q: 浏览器回退时 Chrome 窗口会弹出来? 不会。BrowserBridge 使用 --headless 模式(若 Playwright 可用)或 subprocess 启动真实 Chrome(带 --remote-debugging-port),在后台运行。

Q: 浏览器回退很慢? 首次回退需要启动 Chrome(~3 秒)。之后 Chrome 保持运行,后续请求复用。整体比 curl_cffi 慢约 5-10 秒,但能绕过 SG_REL。

Q: PSID 不过期还要重导吗? TS 失效或 soft-block 时仍要重导。RotateCookies 不能解决所有失效。

Q: 和网页答案差很多? 解析依赖 HTML 片段结构;引用已统一为 [[标题](url)]。若缺图/表,开 verbose 对照上游 HTML。

Q: 商业使用? 不建议;违反 ToS,且协议不稳定。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选