browserless
概述¶
browserless 是一套將 Chromium 瀏覽器容器化並提供 API 服務的開源解決方案,專為無頭模式(Headless)設計。它允許開發者透過 WebSocket 或 HTTP 接口遠端控制瀏覽器,從而執行複雜的網頁自動化任務,如爬蟲、網頁截圖、轉存 PDF 或網頁內容抓取。
在 Oracle Ampere A1 ARM64 基礎架構上,browserless 展現了極佳的性能,特別是在與 n8n 進行內網整合時,能實現高效的自動化工作流。
核心特性¶
- API 化操作:提供
/screenshot、/pdf及/content等預設接口,無需自行編寫繁瑣的 Selenium 或 Puppeteer 腳本即可獲得結果。 - 資源調度:支援配置最大併發分頁數(
MAX_CONCURRENT_SESSIONS)、請求隊列長度及逾時設定,有效保護伺服器算力。 - ARM64 原生支援:官方映像檔
browserless/chrome原生支援 ARM 架構,在 Ampere A1 等 ARM 環境下運行極其流暢。 - 無狀態運作:容器本身不儲存持久化數據,適合透過 docker 進行快速部署與自動化更新,不佔用額外的儲存資源。
部署規範¶
根據私有雲架構標準,browserless 必須運行於 cf_network 內部網絡中,並嚴禁將容器埠映射至 Host 主機。建議使用 Dockhand 進行版本管理,並將編排檔存放於 GitHub 儲存庫中進行版本控制。
部署範例 (docker-compose)¶
version: '3.8'
services:
browserless:
image: browserless/chrome:latest
container_name: browserless
platform: linux/arm64
restart: always
environment:
- PORT=3000
- TOKEN=YOUR_SECURE_TOKEN
- MAX_CONCURRENT_SESSIONS=10
- PRE_BOOT_CHROME=true
networks:
- cf_network
networks:
cf_network:
external: true
安全與整合¶
由於 browserless 具備執行任意 JavaScript 的能力,安全設定至關重要:
- Token 授權:務必設定
TOKEN環境變數(建議 32-64 字元隨機十六進位字串),確保未經授權的訪問會返回Unauthorized錯誤。 - 邊緣隱形防禦:透過 cloudflare-tunnel 進行公開訪問設定,並在 microsoft-entra-id 或 cloudflare Access 端強制執行生物特徵驗證。
- 內網直連:在 n8n 等同網段服務調用時,應使用
http://browserless:3000直接請求,完全避開公網曝露面。
若您在訪問瀏覽器面板時遇到 Unauthorized,請確認 URL 後方已正確帶入 ?token=YOUR_TOKEN 參數。