Skip to content

feat: 支援 Brave、Edge、Firefox 帳號導入、讀取鎖突破與批量容錯 - #19

Open
Vaxaxas wants to merge 9 commits into
Mag1cFall:mainfrom
Vaxaxas:feat-brave-edge-firefox-import
Open

Vaxaxas wants to merge 9 commits into
Mag1cFall:mainfrom
Vaxaxas:feat-brave-edge-firefox-import

Conversation

@Vaxaxas

@Vaxaxas Vaxaxas commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • 瀏覽器帳號匯入生態擴展:支援 Brave、Edge 與 Firefox 瀏覽器帳號匯入,包含自動解析 Preferences 中 gaia_cookie Protobuf 多帳號清單 (/u/0 ~ /u/N)。
  • 突破運行中檔案讀取鎖:實作 Windows DuplicateHandle 技術,突破瀏覽器開啟時 Cookies 與 Web Data 的獨佔讀取鎖 (Sharing Violation),無須關閉瀏覽器即可直接匯入。
  • App-Bound (v20) 金鑰解密與容錯:動態置換 Helper DLL 的 COM CLSID/IID 解鎖 Brave/Edge App-Bound 主金鑰,剝除 v20 AES-GCM 明文 32 位元組 Hash Header,並實作批量匯入單帳號容錯。
  • 代理即時預檢診斷:新增 POST /api/proxies/test 與前端通用 ProxyInput 測試組件,支援 RTT 延遲、連通性與 Google 302 (/sorry/index) 風控狀態即時回顯。
  • 風控代理自動冷卻與熱遷移:當代理遭 Google 風控攔截時,自動移入 30 分鐘隔離冷卻,並將綁定帳號平滑熱遷移至代理池中的其他健康節點。
  • 會話失效無感自動重新連線:請求調度層捕獲認證過期(401/403/登入頁重定向)時,自動呼叫 1 次重新連線從本機瀏覽器讀取新鮮 Cookie 自癒並無感重試,失敗則保持原樣返回。
  • 配額耗盡識別與自動 Refresh Quota:精準識別 Google 錯誤碼 1173 為高級模型配額耗盡,自動向 Google 同步 5 小時週期重置時刻 (ResetAt);滿額帳號在重置前嚴格禁試,背景 watchQuotas 協程到期時自動向 Google 刷新用量並解除冷卻。
  • 單一統一排程策略 (Exhaust-First):重構排程演算法,統一為「單帳號配額耗盡優先 + 上下文會話黏性」,有對話則優先維持同帳號節省 Token 上下文,無對話則依序耗盡單一帳號配額再換下一位。
  • 全池 Fallback 容錯:解鎖 stream 與 audio 的全池 Fallback 換號重試,遇到 1173、429、502 等錯誤且未輸出字元前,自動順延嘗試池中所有有配額的可用帳號。
  • 修復 Function Calling 邊界剝離缺陷:解決模型在中文句號後無換行緊貼 ````json` 時未正確剝離代碼塊、導致正文末尾殘留懸空標記的問題。
  • 介面體驗與管理功能增強:匯入頁面鎖定已匯入帳號的勾選,支援同信箱多 Profile 複合目標匹配;帳號管理清單新增批量紅色刪除帳號選項與二次確認對話框;設定頁新增「遇到錯誤自動換號 (Fallback)」開關與單一排程策略展示;全面補齊 7 國語言 i18n。

Test plan

  • 實機驗證 Brave / Edge / Chrome 運行中讀取鎖突破與 Cookies 解密
  • 驗證 gaia_cookie 多帳號解析出真實 Email 與 AuthUser 序號
  • 驗證批量匯入單一帳號失效不影響其餘帳號入庫
  • 實機驗證 SOCKS5 代理診斷、Google 人機驗證攔截識別與代理自動隔離冷卻
  • 驗證全池 Fallback、單帳號耗盡排程與會話黏性 (TestUnifiedRoutingQuotaAwareness, TestUnifiedRoutingSessionAffinity)
  • 驗證單元測試(TestPoolCooldownAndRebind, TestPoolReconnectHook, TestTestProxyFormatValidation, TestSplitToolEnvelope*)全數通過
  • 前端 pnpm build 通過、後端 go test 全模組測試通過與二進位執行檔編譯驗證

🤖 Generated with Claude Code

fi and others added 9 commits October 25, 2026 13:19
- 擴充 Chromium 導入架構,支援 Brave 與 Microsoft Edge 的 Local State、Preferences 與 Web Data (token_service) / Network/Cookies
- 新增 Firefox 設定檔掃描與 cookies.sqlite 讀取,自動識別 Google/Gemini 核心登入 Cookie
- 支援 Windows 原生 DPAPI (CryptUnprotectData) 解密主金鑰與 Chromium v10 / v20 Token 及 Cookie
- 精確辨識執行中瀏覽器造成的 SQLite 排他鎖 (Sharing Violation),提示使用者關閉後重試
- 管理端 API 新增 GET/POST /api/accounts/import/browser,相容舊有 /api/accounts/import/chrome
- 管理端前端匯入頁面升級為多瀏覽器切換,帳號列表與詳情頁正確標註來源瀏覽器
- CLI setup 指令新增 --browser 旗標,未指定且未安裝 Chrome 時自動偵測並切換至本機已安裝瀏覽器
- 同步更新中英文 README 說明文件與多語系文案

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 新增 gaia_cookie (last_list_accounts_binary_data) Protobuf 解析器,完整支援單一 Profile 登入多 Google 帳號探索
- 精確解析每個 Google 帳號的真實 Email、DisplayName、GaiaID 與 AuthUser 序號 (/u/0 ~ /u/N)
- 動態置換 abe_helper_amd64 DLL 中的 CLSID 與 IElevator IID,成功解鎖 Brave 與 Edge 的 App-Bound Encryption (v20) 主金鑰
- 匯入 Chromium Cookie 時自動傳遞對應的 authUser 序號,支援各帳號獨立呼叫 /u/N 官網介面
- 優化資料庫排他鎖 (Sharing Violation) 的錯誤提示,明確指引關閉瀏覽器後重試

Co-Authored-By: Claude Code <noreply@anthropic.com>
- Chromium v20 (App-Bound Encryption) 在 AES-GCM 解密後的明文開頭固定包含 32 位元組的 SHA256 驗證標頭
- 增加 isPrintableASCII 判斷,自動剝離前 32 位元組二進位雜湊,還原標準 Google Cookie 字串以通過登入檢驗

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 實作 Windows DuplicateHandle 技術,當複製 Cookies 遭遇 Sharing Violation 獨佔鎖時自動啟用
- 從運行中的瀏覽器進程 (Brave, Chrome, Edge, Firefox) 安全複製檔案 Handle,無感讀取 Cookies 及 WAL 檔案
- 使用者無需關閉瀏覽器即可直接匯入帳號與認證資料
- 同步支援跨平台空實現

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 僅在帳號 Email 相符時才標記為 Imported: true
- 避免同 Profile 下任一帳號匯入後導致同 Profile 所有其他帳號皆被誤判為已匯入

Co-Authored-By: Claude Code <noreply@anthropic.com>
- validateAndWriteImports 改為獨立驗證並寫入每個帳號,單個帳號連線或驗證失敗不中斷其餘帳號匯入
- 後端 ImportBrowser 回傳所有成功帳號清單與失敗詳情,避免單一失敗造成全體勾選無效
- 前端 ImportPage 即時更新已成功帳號,僅保留失敗項勾選並顯示部分成功 Toast 提示
- 多語系補充 importPartial 文案

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 實作 browserRenewal:當非 OAuth 之瀏覽器帳號會話失效時,自動透過 DuplicateHandle 從運行中瀏覽器重讀最新 Cookie 並原子寫回磁碟,達成永久自動自癒
- Verify (重新連接) 觸發時自動先從本機瀏覽器同步最新 Cookie
- 移除匯入清單中因 imported 而被強制禁用的限制,支援直接勾選覆蓋更新,無需手動先刪除帳號

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 後端新增 ProxyDiagnostic 代理即時診斷與 POST /api/proxies/test 探針
- 代理遭遇 Google 302 人機驗證時自動隔離冷卻 30 分鐘並觸發帳號無感熱遷移
- 遇到會話失效(401/403/登入重定向)時自動重新連線 1 次,成功則無感重試,失敗保持原樣返回
- 修復 Function Calling 橋接層中文標點後緊貼 ```json 的代碼塊剝離邊界缺陷
- 前端匯入頁面鎖定已匯入帳號的勾選,支援同信箱多 Profile 複合目標匹配
- 帳號管理清單新增批量紅色刪除帳號選項與二次確認對話框
- 封裝通用 ProxyInput 支援連線測試與風控診斷提示,全面補齊 7 國語言 i18n
- 包含相關模組單元測試(proxy, proxypool, tool_bridge)

Co-Authored-By: Claude Code <noreply@anthropic.com>
- 精準識別 Google 錯誤碼 1173 為高級模型配額耗盡,自動向 Google 同步 5 小時週期重置時間 (ResetAt)
- 配額已達 100% 的帳號在重置前嚴格禁試,背景 watchQuotas 協程到期自動向 Google 刷新用量
- 重構為單一統一排程策略:單帳號配額耗盡優先 (Exhaust-First) + 上下文會話黏性 (Session Affinity)
- 解鎖 stream 與 audio 的全池 Fallback 容錯,遇錯誤未輸出前自動切換至下一個有額度的帳號
- 前端設定頁新增「遇到錯誤自動換號 (Fallback)」開關,並更新單一排程策略展示
- 新增 balancer 配額感知與會話黏性單元測試,全模組測試 100% 通過

Co-Authored-By: Claude Code <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant