ホーム / 全スキル / コンテンツ制作 / canghe-danger-gemini-web
コンテンツ制作 · freestylefly/canghe-skills

canghe-danger-gemini-web

リバースエンジニアリングされたGemini Web APIを介して画像およびテキストを生成します。テキスト生成、プロンプトからの画像生成、ビジョン入力用の参照画像、マルチターン会話をサポートします。他のスキルが画像生成バックエンドを必要とする場合や、ユーザーが「Geminiで画像を生成して」「Geminiテキスト生成」と要求した場合、またはビジョン対応のAI生成が必要な場合に使用します。

L5 厳格管理 · 隔離環境と厳格な監査V2 人間監査済リバースAPI規約/コンプライアンス認証情報/セッションコマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author freestyleflyGitHub freestylefly/canghe-skills ↗License MIT(仓库根 LICENSE)Commit dd0bf35595
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

実装の基礎は独自に移植されたGemini Webクライアントです。オープンソースのgemini_webapiをファイル単位でTypeScript(client/types/utils)へ移植しており、公式APIキーなしでテキストや画像を生成できます。

skills/canghe-danger-gemini-web/SKILL.md
| `scripts/gemini-webapi/*` | TypeScript port of `gemini_webapi` (GeminiClient, types, utils) |
処理内容:スクリプトディレクトリには計25ファイル(491行のmain.ts 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',
処理内容:Web版のフロントエンド・バックエンド間で実際に使用されているプライベートパスを定数として固定化し、以降のすべての生成リクエストをこれらのパスに向けて送信します。

認証の最初のステップはアクセストークンの取得です。init時に既存のCookieを用いてget_access_tokenを呼び出し、有効なトークンが取得できない場合はエラーをスローします。すべての生成リクエストにはこのトークンが必要です。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/client.ts
const [token, valid] = await get_access_token(this.cookies, this.proxy, vb);
処理内容:トークンはthis.access_tokenに保存されます。トークンが欠落している場合、クライアントは直接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を用いてEndpoint.UPLOADにPOSTし、リモートハンドルを取得します。

マルチターン会話はサーバー側のセッションではなく、Geminiのチャットメタデータをローカルのsessions/<id>.jsonに保存し、--sessionIdにより同一メタデータを再利用して対話を継続します。

skills/canghe-danger-gemini-web/SKILL.md
Session files stored in data directory under `sessions/<id>.json`.
処理内容:セッション状態はスキル自身によって完全に管理されてディスクに保存されます。--list-sessionsで既存セッションを一覧表示します。

リバースエンジニアリングの利用には「事前同意」が明示的に要求されます。初回実行時には同意ファイル(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のフローに記述されており、エージェントがドキュメントに従って実行します。同意ファイルは~/.local/share/canghe-skills/gemini-web/consent.jsonに配置されます(macOS/Windowsそれぞれにパスが存在)。

リクエスト層にはリトライデコレータrunningが備わっています。クライアント未初期化時は自動でinitを実行し、APIErrorが発生してリトライ回数が残っている場合は1秒スリープした後に再試行します。

skills/canghe-danger-gemini-web/scripts/gemini-webapi/utils/decorators.ts
if (e instanceof APIError && r > 0) {
処理内容:デコレータを用いて「初期化済み保証+失敗時リトライ」を各公開メソッドの外側にラップしており、画像生成エラーにはさらに厳格なリトライ上限が設けられています。

2コア機能

01テキスト生成(3段階のモデル:gemini-3-proデフォルト / gemini-2.5-pro / gemini-2.5-flash)
02画像生成(--image、デフォルトはgenerated.png)
03Vision参照画像の入力(--reference/--ref)
04マルチターン会話(--sessionIdによるローカルセッションメタデータの再利用 + --list-sessions)
05Cookieライフサイクルの自己管理(初回ブラウザログイン、自動キャッシュ、--loginによる強制更新)
06プロキシサポート(制限されたネットワーク環境からGoogleへアクセスするためのHTTP_PROXY/HTTPS_PROXY)
07同意ゲートウェイ機能(consent.jsonのaccepted + disclaimerVersionを検証し、拒否時は即時停止)
08他のスキルの画像生成バックエンドとしての利用

3外部依存関係

KindDependency / Endpoint
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推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
隔離環境で実行、都度明示的な認可
管理者向け
厳格な認可、全量監査、コンプライアンス確認
判定根拠(ファイルパスと抜粋)
  • SKILL.md / 脚本: 未公開またはリバースエンジニアリングされたプライベートAPIの呼び出し / クライアント識別情報の偽装
  • SKILL.md / 脚本参数: 自動検出の回避、ホストサンドボックスの無効化、またはSSL証明書検証のスキップを含む
  • SKILL.md / 会话存储: ブラウザのユーザーログイン状態およびセッションCookieの読み取りまたは再利用
  • 本地凭据 / 浏览器配置: ユーザーログインCookie/セッション/キーチェーンの読み取り: ブラウザのセッションCookie: __Secure-1PSID / __Secure-1PSIDTSなど(ローカルのcookies.json、またはローカルのChrome経由)
  • scripts/: ローカルスクリプトまたはコマンドの実行: scripts/main.ts(npx -y bunにより実行。必要に応じてローカルブラウザを検出・spawnしてCookieを読み取り)
  • 网络端点: 外部ネットワークアクセスの宣言: https://gemini.google.com/app(INITによるページトークン取得)
  • 本地工作目录: ファイルの読み書きおよび成果物の出力: cookies.json(認証情報の永続化: セッションCookieの書き込み)
監査ノート: (機能およびポリシーレベルの判定であり、悪意のある混入ではありません)。(a) リバースエンジニアリング + Webクライアントの偽装:gemini.google.comのStreamGenerate/BardChatUiプライベートエンドポイントやaccounts.google.com/RotateCookiesを直接呼び出し、ブラウザのセッションCookieを利用してログイン済みWebクライアントを偽装しており、公式APIではありません。(b) 認証情報面:ブラウザのセッションCookie(__Secure-1PSID/__Secure-1PSIDTSなど)を読み取って使用します。load-browser-cookies.tsはローカルのデバッグポート(/json/version)を検出してChrome/Chromium/Edgeをspawnし、実際のログイン状態を取得した上でcookies.jsonに永続化し、1PSIDTSを個別にローテーションして再キャッシュします。また、環境変数によるデータディレクトリ/ブラウザパスの上書きも可能です。(c) コマンド面:スクリプトがブラウザプロセスを起動し、リクエスト層には自動リトライが含まれます。詳細説明:TLS検証のダウングレードや自動化検出回避の偽装(webdriverパッチやstealth機能なし)は確認されず、任意コード実行や大量スクレイピングもありません。判定基準は「プライベートインターフェースのリバースエンジニアリング + プライベート認証情報 + Webセッションの偽装」に基づくものであり、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結論

  • 公式キーなしで利用可能:1回のブラウザログイン後にキャッシュされたセッションCookieを利用してテキストや画像を生成でき、API申請や課金を回避できます。
  • 充実した機能面:テキスト、画像、vision参照画像、マルチターン会話、3段階のモデル、プロキシ接続が単一のCLIに統合されています。
  • Cookieライフサイクルの自動化:cookies.jsonのディスク保存および1PSIDTSキャッシュの個別ローテーションを行い、手動でのCookie貼り付けよりも持続性があります。
  • 他のスキルの無料画像バックエンドとして利用可能(descriptionに「image generation backend」として明記)。
  • 同意ゲートウェイと明確な免責フローを備え、インフォームドユースの前提条件が明確に記載されています。
  • 最適な用途: 個人開発者による実験的または機密性の低いタスクに適しています。公式APIキーがない状況でGeminiを用いて画像生成や長文問い合わせを行いたい場合、vision入力やマルチターン対話が必要な場合、または他のスキルの画像バックエンドとして利用したい場合(アカウントリスクおよび安定性リスクを許容できることが前提)。
    不向きな用途: エンタープライズの本番環境、機密データ処理、安定したSLAやコンプライアンス監査が必要な環境には適していません。メインアカウントでの高頻度利用には適していません。Chrome/Chromiumが存在せず、ブラウザ依存関係のインストールを望まない環境には適していません。
    Install Agent-Ready
    ① Verified Mirror 2026-10-10
    Option A · Direct DownloadDownload canghe-danger-gemini-web.tar.gz
    sha256: a98a97c1f7c81879…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit dd0bf35595.