首页 / 全部技能 / 内容创作 / canghe-danger-gemini-web
内容创作 · freestylefly/canghe-skills

canghe-danger-gemini-web

Generates images and text via reverse-engineered Gemini Web API. Supports text generation, image generation from prompts, reference images for vision input, and multi-turn conversations. Use when other skills need image generation backend, or when user requests "generate image with Gemini", "Gemini text generation", or needs vision-capable AI generation.

风险提醒:红色 · 谨慎使用AI 侦查报告
作者 freestyleflyGitHub freestylefly/canghe-skills ↗许可 MIT(仓库根 LICENSE)commit dd0bf35595
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

实现基础是一份手写的 Gemini Web 客户端:把开源 gemini_webapi 逐文件移植为 TypeScript(client/types/utils),因此能在没有官方 API Key 的情况下出文本与图像。

skills/canghe-danger-gemini-web/SKILL.md
| `scripts/gemini-webapi/*` | TypeScript port of `gemini_webapi` (GeminiClient, types, utils) |
注:这里在做什么:脚本目录共 25 个文件(main.ts 491 行 CLI 与 gemini-webapi 库),能力来自这份自维护客户端,而非官方 SDK。

端点集中在 constants.ts:INIT 取页面令牌、StreamGenerate 走私有流式接口、ROTATE_COOKIES 轮换会话 cookie、UPLOAD 传参考图、BATCH_EXEC 走 batchexecute。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/constants.ts
'https://gemini.google.com/_/BardChatUi/data/assistant.lamda.BardFrontendService/StreamGenerate',
注:这里在做什么:把网页版前后端之间实际使用的私有路径固化为常量,后续所有生成请求都打这些路径。

认证第一步是取 access token:init 时用已有 cookie 调 get_access_token,拿不到有效 token 就抛错——所有生成请求都要带上它。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/client.ts
const [token, valid] = await get_access_token(this.cookies, this.proxy, vb);
注:这里在做什么:token 存入 this.access_token;缺失时 client 直接抛 APIError('Missing access token.'),即没有会话凭据就无法工作。

凭据来源是浏览器会话 cookie:load-browser-cookies 会探测本机调试端口(/json/version,默认 127.0.0.1)并按需 spawn 浏览器进程读取真实登录态。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/utils/load-browser-cookies.ts
const res = await fetch_with_timeout(`http://127.0.0.1:${port}/json/version`, { timeout_ms: 5_000 });
注:这里在做什么:Node 端直接连本机 Chrome/Chromium/Edge 的调试端口,读出 x.com 之外 Google 域的 cookie 供请求使用。

cookie 与轮换结果被持久化到本地文件:cookie-file 以 JSON 写盘,另有 rotate-1psidts 把刷新得到的 1PSIDTS 缓存到文件。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/utils/cookie-file.ts
await writeFile(p, JSON.stringify(payload, null, 2), 'utf8');
注:这里在做什么:把过滤后的会话 cookie 落成 cookies.json;rotate-1psidts.ts 同样把新值写到 cachePath,等价于本地保存账号登录态。

图像能力落在 types/image.ts:下载远端图像并写盘(writeFile(dest, buf)),参考图则经 upload-file 走 content-push 上传通道。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/types/image.ts
await writeFile(dest, buf);
注:这里在做什么:生成/网络抓到的图片字节被直接写入 dest;upload_file 用 FormData POST 到 Endpoint.UPLOAD 换取远端句柄。

多轮会话不是服务端会话,而是把 Gemini 的 chat metadata 存进本地 sessions/<id>.json,靠 --sessionId 复用同一 metadata 续聊。

skills/canghe-danger-gemini-web/SKILL.md
Session files stored in data directory under `sessions/<id>.json`.
注:这里在做什么:会话状态完全由 skill 自身管理并落盘;--list-sessions 用于列出已有会话。

逆向使用被显式要求“先同意”:首次必须校验 consent 文件(accepted 且 disclaimerVersion 1.0),拒绝则退出。

skills/canghe-danger-gemini-web/SKILL.md
1. Check if consent file exists with `accepted: true` and `disclaimerVersion: "1.0"`
注:这里在做什么:门禁写进 SKILL.md 流程,由 agent 依文档执行;同意文件位于 ~/.local/share/canghe-skills/gemini-web/consent.json(macOS/Windows 各有路径)。

请求层带重试装饰器 running:客户端未初始化时自动 init,遇到 APIError 且有剩余重试次数则 sleep 1s 后重试。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/utils/decorators.ts
if (e instanceof APIError && r > 0) {
注:这里在做什么:用装饰器把“保证已 init + 失败重试”包在每次公开方法外层,出图错误另有更严格的重试上限。

2核心能力

01文本生成(三档模型:gemini-3-pro 默认 / gemini-2.5-pro / gemini-2.5-flash)
02图像生成(--image,默认 generated.png)
03Vision 参考图输入(--reference/--ref)
04多轮会话(--sessionId 复用本地 session metadata + --list-sessions)
05Cookie 生命周期自管理(首次浏览器登录、自动缓存、--login 强制刷新)
06代理支持(HTTP_PROXY/HTTPS_PROXY 供受限网络访问 Google)
07同意门禁(consent.json 的 accepted + disclaimerVersion 校验,拒绝即停)
08作为其它 skill 的图像生成后端

3外部依赖

类型依赖
networkgemini.google.com(INIT 页面取令牌 + StreamGenerate 私有生成接口 + batchexecute)
networkaccounts.google.com(RotateCookies 轮换会话 cookie)
networkcontent-push.googleapis.com(参考图上传)
networklh3.googleusercontent.com(返回图像资源 gg-dl)
clibun / npx(以 npx -y bun 直接运行脚本,无运行时抽象)
cli本机 Chrome/Chromium/Edge 可执行文件(按需 spawn 以读取会话 cookie)

4风险提醒 风险提醒:红色 · 谨慎使用

风险提醒:红色 · 谨慎使用
  • 账号风险(逆向接口 + 冒充网页会话) — 私有端点与网页会话冒充随时可能触发风控或失效;exceptions.ts 亦备有 TemporarilyBlocked。建议只用小号/非关键账号。
  • 浏览器凭据被读取并落盘 — 经本机调试端口从真实浏览器会话取 __Secure-1PSID/1PSIDTS 并写入 cookies.json 与 1PSIDTS 缓存;这些文件等价于登录态,需按密钥对待。
  • --promptfiles 是无过滤的本地文件读取入口 — 被指向的文件内容会拼进 prompt 发往 Google;上层 skill 或用户若不慎指向密钥文件,等于主动外泄。
  • consent 只是文档级约束 — 脚本自身不校验 consent.json,靠 agent 按 SKILL.md 执行;在无 skill 规范的宿主里可能被直接调用。
  • 接口随时可能失效 — 依赖逆向私有端点,Google 改前端即可能整体失效,且无官方支持渠道。
  • 内容出境与合规 — 提示词与参考图都会离开本机(含上传到 content-push.googleapis.com),企业内网/涉密内容不适用。
风险提醒:红色,谨慎使用(属能力/策略级判定,非恶意植入)。(a) 逆向工程 + 冒充网页客户端:直接调 gemini.google.com 的 StreamGenerate/BardChatUi 私有端点与 accounts.google.com/RotateCookies,靠浏览器会话 cookie 冒充已登录网页端,不是官方 API。(b) 凭证面:读取并使用浏览器会话 cookie(__Secure-1PSID/__Secure-1PSIDTS 等);load-browser-cookies.ts 会探测本机调试端口(/json/version)并 spawn Chrome/Chromium/Edge 读取真实登录态,随后把 cookie 落盘到 cookies.json,并单独轮换 1PSIDTS 再缓存。另有环境变量覆盖数据目录/浏览器路径。(c) 命令面:脚本会启动浏览器进程,请求层带自动重试。程度说明:未发现 TLS 校验降级、未发现反自动化伪装(无 webdriver patching/stealth)、无任意代码执行、无批量采集;定级依据是“逆向私有接口 + 私有凭据 + 冒充网页会话”,非 stealth 手段。

5第二遍独立确认

  • [ok] 逆向 API 而非官方 API(red 主因之一) — constants.ts 直指 gemini.google.com 的 StreamGenerate 私有路径;SKILL.md/description 自述 reverse-engineered,并设 consent 门禁。
  • [ok] 读取浏览器会话 cookie(red 主因之二) — load-browser-cookies.ts 探测 127.0.0.1 调试端口并按需 spawn 浏览器;SKILL.md 自述 First run opens browser for Google auth。
  • [ok] 凭据落盘 — cookie-file.ts 的 writeFile(p, JSON.stringify(payload, null, 2)) 与 rotate-1psidts.ts 的 writeFile(cachePath, v) 两处写盘,路径由 paths.ts 解析。
  • [ok] 无 TLS 降级 / 无 stealth 伪装 / 无任意代码执行 — 相关行为在 bundle 正文与 §3 风险扫描中均零命中;调度只有 init 重试与 sleep。
  • [ok] consent 门禁存在但为“软门禁” — SKILL.md 要求先建 consent.json 再使用;但脚本自身不校验该文件,属文档级约束,已写入 risks。
  • [ok] 功能声明与实现相符 — 文本/图像/vision/多轮四项在 SKILL.md Options 与 main.ts/client.ts 均有对应实现,未见夸大。

6结论

  • 零官方 key 可用:一次浏览器登录后靠缓存的会话 cookie 出文本与图像,省去 API 申请与计费。
  • 能力面完整:文本、图像、vision 参考图、多轮会话、三档模型、代理出口都在一个 CLI 里。
  • cookie 生命周期自动化:落盘 cookies.json 并单独轮换 1PSIDTS 缓存,比手贴 cookie 耐用。
  • 可作为其它 skill 的免费图像后端(description 明列为“image generation backend”)。
  • 有 consent 门禁与明确免责流程,知情使用门槛写清楚了。
  • 适合:适合个人开发者做实验性/低敏感任务:没有官方 API key 时想用 Gemini 出图或问长文本、需要 vision 输入与多轮对话,或作为其它 skill 的图像后端(需愿意承担账号与稳定性风险)。
    不适合:不适合企业生产、涉密数据处理、需要稳定 SLA 或合规审计的场景;不适合在主账号上高频使用;不适合无 Chrome/Chromium 且不愿装浏览器依赖的环境。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-10-10
    方式 A · 人下载镜像包下载 canghe-danger-gemini-web.tar.gz
    sha256: a98a97c1f7c81879…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit dd0bf35595;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库freestylefly / freestylefly/canghe-skills
    本 skill commitdd0bf35595
    许可MIT(仓库根 LICENSE)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近