跳轉至

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 的能力,安全設定至關重要:

  1. Token 授權:務必設定 TOKEN 環境變數(建議 32-64 字元隨機十六進位字串),確保未經授權的訪問會返回 Unauthorized 錯誤。
  2. 邊緣隱形防禦:透過 cloudflare-tunnel 進行公開訪問設定,並在 microsoft-entra-idcloudflare Access 端強制執行生物特徵驗證。
  3. 內網直連:在 n8n 等同網段服務調用時,應使用 http://browserless:3000 直接請求,完全避開公網曝露面。

若您在訪問瀏覽器面板時遇到 Unauthorized,請確認 URL 後方已正確帶入 ?token=YOUR_TOKEN 參數。

Sources

See Also