broswer / README.md
charlielin0121's picture
Upload 10 files
ac2af53 verified
|
Raw
History Blame Contribute Delete
5.03 kB
metadata
title: Private Manual Browser
emoji: 🖥️
colorFrom: gray
colorTo: blue
sdk: docker
app_port: 7860
pinned: false

Private Manual Browser — Hugging Face Docker Space

這是一個只供帳號本人操作的瀏覽器 Space:

Chromium → Xvfb → x11vnc → websockify/noVNC → Nginx :7860

用途是讓使用者透過瀏覽器開啟 Hugging Face Space,手動操作遠端 Chromium。它不會自動解 CAPTCHA、不會自動接受條款,也不包含 OpenAI API Bridge。

必要 Secrets

Space → Settings → Variables and secrets → Secrets 建立:

Secret 說明
BROWSER_USERNAME noVNC 網頁的 HTTP Basic Auth 使用者名稱。
BROWSER_PASSWORD 強隨機密碼,建議至少 24 個字元。

產生密碼:

python -c "import secrets; print(secrets.token_urlsafe(32))"

不要把 Google、Arena 或其他網站密碼設定為 BROWSER_PASSWORD

建議 Variables

Variable 預設值 說明
BROWSER_WIDTH 1920 虛擬桌面寬度,640–3840。
BROWSER_HEIGHT 1080 虛擬桌面高度,640–2160。
START_URL https://arena.ai/text/direct Chromium 啟動頁面。

資源較少時可使用:

BROWSER_WIDTH=1366
BROWSER_HEIGHT=768

部署

Space repository 根目錄:

Dockerfile
README.md
nginx.conf
supervisord.conf
start.sh
scripts/
  launch-browser.sh
  launch-nginx.sh
  launch-openbox.sh
  launch-x11vnc.sh

建立 Docker Space、上傳檔案、設定兩個必要 Secrets,然後 Factory Rebuild。

開啟瀏覽器

造訪 Space 的直接網址:

https://YOUR-SPACE.hf.space/

瀏覽器會要求 HTTP Basic Auth:

Username: BROWSER_USERNAME
Password: BROWSER_PASSWORD

成功後會進入 noVNC,並自動連接遠端桌面。可使用 noVNC 左側控制列調整縮放、全螢幕及剪貼簿。

持久化 Chrome Profile

如果 Space 已附加 Hugging Face Persistent Storage,程式會使用:

/data/manual-browser/chromium-profile

其中包含:

  • Cookies
  • Local Storage
  • 登入 Session
  • 瀏覽器設定
  • 網站權限
  • 歷史紀錄

如果 /data 不存在,會改用:

/home/user/browser-data/chromium-profile

並在 Logs 顯示 profile 是暫存的;容器重啟後可能遺失。

安全要求

  1. 強烈建議使用 Private Space。 Basic Auth 是第二層保護,不應取代 Hugging Face 存取控制。
  2. 使用獨立、強隨機的 BROWSER_PASSWORD
  3. 不要分享 Space URL 或密碼。
  4. /data 內的 Chromium profile 等同登入憑證,不能公開或下載分享。
  5. 不要在多人共用 Space 中登入私人 Google 帳號。
  6. 不使用時應 Pause Space;需要撤銷所有 Session 時,刪除 /data/manual-browser/chromium-profile
  7. x11vncwebsockify 只監聽容器內的 127.0.0.1,外部只能經過 Nginx Basic Auth。
  8. Chromium 在容器中使用 --no-sandbox,因此只能在受控的 Private Space 中操作可信網站。

Google 登入

這是由使用者本人操作的可見 Chromium,不是自動輸入帳密的腳本。但 Google 仍可能因資料中心 IP、新裝置、Chromium 環境或帳號政策要求:

  • MFA/2FA
  • 裝置確認
  • CAPTCHA
  • 拒絕登入

請由帳號本人處理;本專案不會繞過 Google 安全驗證。如果 Google 拒絕此環境,請改用自己電腦的一般 Chrome 建立 Arena Storage State。

Health Check

不需認證的程序存活端點:

https://YOUR-SPACE.hf.space/healthz

回傳:

{"status":"alive"}

它只表示 Nginx 存活,不代表 Chromium 已登入任何網站。

Cronitor

可監控:

GET https://YOUR-SPACE.hf.space/healthz

Assertions:

response.code = 200
response.body contains "alive"

監控請求可能喚醒 Space,但不能保證 Hugging Face 免費 Space 永不休眠。

常見問題

401 Unauthorized

確認 BROWSER_USERNAMEBROWSER_PASSWORD 是 Secrets,修改後 Restart/Factory Rebuild。

黑畫面

等待 10–20 秒後重新整理;檢查 Logs 中 Xvfb、Openbox、Chromium、x11vnc 是否都進入 RUNNING。

noVNC 顯示 WebSocket disconnected

確認 Nginx、websockify、x11vnc 都在運行,並使用根網址自動產生的 path=websockify

重啟後登出

確認 Space 已附加 Persistent Storage,Logs 應顯示:

Browser profile: persistent /data/manual-browser/chromium-profile

清除所有登入狀態

在 Space 停止後刪除:

/data/manual-browser/chromium-profile

再重新啟動。這會登出所有網站並清除瀏覽器資料。

限制

  • 這是互動式遠端瀏覽器,不是高效能桌面。
  • 音訊、視訊、WebGL 與硬體加速可能受限。
  • 免費 Space 可能休眠。
  • Persistent Storage 需要 Hugging Face 支援的儲存方案。
  • 本專案不會自動化 CAPTCHA、MFA、OAuth 或法律條款同意。