Spaces:
Running
在 Linux 桌面提取 ARENA_STORAGE_STATE_B64
本指南只在 Linux 電腦完成第一次人工登入與狀態匯出,不會在 Linux 部署 API。
0. 適用條件
你需要:
- 有圖形桌面的 Linux,而不是只有 SSH 的純伺服器。
- x86_64/amd64 架構,或已經能正常運行 Google Chrome 的其他架構。
- 自己有權使用的 Google/Arena 帳號。
- 能在官方 Arena 頁面自行處理條款、MFA、CAPTCHA。
檢查架構:
uname -m
一般 Google Chrome .deb 適用:
x86_64
1. 安裝基本工具
Ubuntu/Debian:
sudo apt update
sudo apt install -y python3 python3-pip python3-venv unzip curl wget
確認:
python3 --version
curl --version
unzip -v | head
2. 解壓專案
假設 ZIP 在 ~/Downloads:
mkdir -p ~/arena-state-export
unzip ~/Downloads/arena-playwright-api-space.zip -d ~/arena-state-export
cd ~/arena-state-export
確認工具:
test -f tools/export_storage_state.py && echo "export tool found"
若顯示 export tool found 才繼續。
3. 建立 Python venv
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install playwright==1.62.0
確認套件:
python -c "import playwright; print('Playwright Python ready')"
這裡只透過 CDP 連接一般 Google Chrome,不需要執行 playwright install chromium。
4. 安裝/確認 Google Chrome
先檢查:
command -v google-chrome-stable || command -v google-chrome
若已安裝:
google-chrome-stable --version 2>/dev/null || google-chrome --version
Ubuntu/Debian x86_64 尚未安裝時:
cd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install -y ./google-chrome-stable_current_amd64.deb
rm -f google-chrome-stable_current_amd64.deb
5. 啟動專用 Google Chrome
不要使用日常 Chrome Profile。專用 Profile 包含暫時的 Google/Arena Session,完成後會刪除。
先建立目錄:
mkdir -p ~/.cache/arena-google-profile
在第一個 Terminal 執行:
google-chrome-stable \
--remote-debugging-address=127.0.0.1 \
--remote-debugging-port=9222 \
--user-data-dir="$HOME/.cache/arena-google-profile" \
--new-window \
"https://arena.ai/text/direct"
若系統指令是 google-chrome:
google-chrome \
--remote-debugging-address=127.0.0.1 \
--remote-debugging-port=9222 \
--user-data-dir="$HOME/.cache/arena-google-profile" \
--new-window \
"https://arena.ai/text/direct"
請保持第一個 Terminal 和 Chrome 都開著。
6. 確認 CDP
開第二個 Terminal:
curl -sS http://127.0.0.1:9222/json/version
正常應包含:
Browser
Protocol-Version
webSocketDebuggerUrl
只查看必要欄位:
curl -sS http://127.0.0.1:9222/json/version | \
python3 -c 'import json,sys; x=json.load(sys.stdin); print(x.get("Browser")); print(x.get("webSocketDebuggerUrl"))'
如果 Connection refused:
ps -eo pid,args | grep '[c]hrome'
確認參數包含:
--remote-debugging-port=9222
--user-data-dir=/home/.../.cache/arena-google-profile
7. 在 Chrome 完成人工操作
在專用 Chrome 中:
- 使用自己的 Google 帳號登入 Arena。
- 由帳號本人完成 MFA、裝置確認或 CAPTCHA。
- 回到
https://arena.ai/text/direct。 - 自行閱讀並決定是否接受 Arena 條款。
- 選擇任意模型。
- 發送:
請回答:Linux Storage State 測試成功。 - 等待模型實際回答。
- 不要關閉 Chrome。
只登入但沒有發送訊息可能不會建立完整條款與對話狀態。
8. 執行匯出
在第二個 Terminal:
cd ~/arena-state-export
source .venv/bin/activate
python tools/export_storage_state.py --cdp-url http://127.0.0.1:9222
按照提示確認操作已完成,再按 Enter。
成功輸出:
arena_storage_state.json
arena_storage_state.b64
9. 驗證輸出,不顯示 Secret 值
ls -lh arena_storage_state.json arena_storage_state.b64
wc -c arena_storage_state.b64
檢查只包含 Arena 網域,不列出 Cookie value:
python - <<'PY'
import base64, gzip, json
from pathlib import Path
encoded = Path("arena_storage_state.b64").read_text().strip()
state = json.loads(gzip.decompress(base64.b64decode(encoded)).decode())
print("Cookie domains:", sorted({c.get("domain") for c in state.get("cookies", [])}))
print("Origins:", [o.get("origin") for o in state.get("origins", [])])
print("Cookie count:", len(state.get("cookies", [])))
PY
預期只出現:
arena.ai
*.arena.ai
lmarena.ai
*.lmarena.ai
不應出現:
google.com
accounts.google.com
10. 複製 Base64
Wayland:
sudo apt install -y wl-clipboard
wl-copy < arena_storage_state.b64
X11:
sudo apt install -y xclip
xclip -selection clipboard < arena_storage_state.b64
沒有剪貼簿工具:
cat arena_storage_state.b64
複製完整單行內容;不要增加引號或 ARENA_STORAGE_STATE_B64= 前綴。
11. 設定 API Space
新增/更新 Secret:
ARENA_STORAGE_STATE_B64
Google Storage State 模式保留:
ADMIN_PASSWORD
BRIDGE_API_KEY
ARENA_STORAGE_STATE_B64
刪除:
SETUP_CODE
ARENA_EMAIL
ARENA_PASSWORD
重新 Build API Space,檢查:
/health
/v1/models
/v1/chat/completions
12. 安全清理
確認 API 正常後:
cd ~/arena-state-export
rm -f arena_storage_state.json arena_storage_state.b64
deactivate
rm -rf ~/.cache/arena-google-profile
如果曾把檔案提交 Git 或公開分享,請立即撤銷 Arena/Google Session 並重新建立狀態。
常見問題
Google 顯示瀏覽器不安全
確認你使用的是一般 google-chrome-stable,而不是 Playwright 內建 Chromium;Google 登入必須由本人手動完成。
No Arena cookies or Local Storage were found
確認在同一個專用 Chrome 中登入 Arena、處理條款、送出訊息並看到回答,再匯出。
API 仍回傳 account_consent_required
可能在條款確認前就匯出。刪除舊輸出,回到專用 Chrome 再確認條款與聊天,重新執行匯出。
API 回傳 503
查看 API Space Logs 與 /health;確認 Secret 是完整單行 Base64,沒有引號、前綴或截斷。