sell人工智慧
web

Browser Rendering

開啟網頁、擷取畫面、產生 PDF、抓取內容——靠跑在 Cloudflare 網路上的無頭(headless)Chromium 完成。

8+REST 端點
120同時開啟瀏覽器(付費)
10 min每日免費時數
lightbulb

Browser Rendering 是什麼?

Browser Rendering 給你一個 headless(無頭,也就是沒有可見視窗)的瀏覽器——一個真正的 Chromium——跑在 Cloudflare 網路上。你用程式碼操控它來載入網頁、點擊、輸入、截圖、輸出 PDF 並擷取內容。

它有兩種用法:用簡單的 REST API 端點處理一次性工作(送出網址、拿回截圖),或在 Worker 裡用 Puppeteer 或 Playwright(操控 Chrome 的熱門函式庫)完全程式化地操控。

smart_toy

把它想成一個會用瀏覽器的機器人

想像一個不知疲倦的機器人,它打開 Chrome、造訪任何網頁、拍張照或存成 PDF、複製文字,而且完全不需要螢幕。你用程式碼下指令,它替你點擊。這就是 Browser Rendering。

help

為什麼要用它?

自己跑 headless Chrome 很吃重:耗記憶體、容易崩潰、又難擴充。Browser Rendering 在你需要時直接給你現成的瀏覽器,而且就在 Workers 旁邊。

photo_camera

截圖與 PDF

把任何網頁變成圖片或可列印的 PDF——很適合做預覽、收據或報表。

travel_explore

抓取動態網站

很多網頁是用 JavaScript 組出內容的。真實瀏覽器看得到完成後的頁面,你才抓得到真正的資料。

data_object

餵乾淨資料給 AI

把網頁轉成乾淨的 Markdown 或結構化 JSON,正是 Workers AI 或 RAG 流程的理想輸入。

rocket

替你自動擴充

以很低的冷啟動成本開出大量瀏覽器,還能重用工作階段(session)跑得更快。

target

什麼時候該用它?

preview

連結預覽圖

為社群卡片或儀表板產生網頁的縮圖。

receipt_long

PDF 文件

從 HTML 範本即時產生發票、票券或報表。

content_paste_search

資料擷取

從需要 JavaScript 才能呈現的網頁,蒐集價格、列表或文章。

checklist_rtl

自動化測試

操控真實瀏覽器點過一遍,驗證自家網站運作正常。

rocket_launch

怎麼開始用?

最快的方式:REST API

處理一次性工作時,你連 Worker 都不用寫。把網址送到像 /screenshot 這樣的端點,就能拿回結果。其他端點還有 /pdf、/content、/scrape、/snapshot、/json、/links 和 /markdown。

bash用 REST API 截圖
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-rendering/screenshot' \
  -H 'Authorization: Bearer {api_token}' \
  -H 'Content-Type: application/json' \
  -d '{ "url": "https://example.com" }' \
  --output screenshot.png

完全操控:在 Worker 裡用 Puppeteer

  1. 安裝函式庫

    把 Cloudflare 版的 Puppeteer 套件加進你的 Worker 專案。

    bash
    npm install @cloudflare/puppeteer
  2. 加上瀏覽器繫結

    在 wrangler.jsonc 宣告一個 browser 繫結,程式裡就能用 env.MYBROWSER。

    jsonc
    {
      "name": "my-browser-worker",
      "main": "src/index.js",
      "compatibility_date": "2025-06-01",
      "browser": {
        "binding": "MYBROWSER"
      }
    }
  3. 操控瀏覽器

    啟動 Chromium、開一個分頁、前往網址並截圖。用完一定要關閉瀏覽器以釋放資源。

    js
    import puppeteer from "@cloudflare/puppeteer";
    
    export default {
      async fetch(request, env) {
        const browser = await puppeteer.launch(env.MYBROWSER);
        const page = await browser.newPage();
        await page.goto("https://example.com");
        const image = await page.screenshot();
        await browser.close();
        return new Response(image, {
          headers: { "content-type": "image/png" }
        });
      }
    };
  4. 部署上線

    把 Worker 發佈出去,就能從任何地方呼叫。

    bash
    wrangler deploy
school

重點概念

visibility_off

無頭瀏覽器

一個沒有可見視窗、照常運作的完整瀏覽器——最適合在伺服器上做自動化。

integration_instructions

Puppeteer 與 Playwright

熱門的函式庫,讓你的程式碼告訴瀏覽器要點什麼、輸入什麼、擷取什麼。

api

REST API 對比繫結

REST 端點快速又免寫程式;Worker 裡的繫結則能逐步完全操控。

sync

工作階段(Session)

跨請求重用一個已暖機的瀏覽器,而不是每次都重開一個——更快也更省。

tips_and_updates

小提示與限制

timer

記得關閉瀏覽器

做完後請呼叫 browser.close()(或重用 session)。免費方案每天只有 10 分鐘的瀏覽器時間,讓瀏覽器一直開著會白白用掉額度。

  • 免費方案:最多同時 3 個瀏覽器,每 20 秒可新開一個,每天合計 10 分鐘。
  • Workers 付費方案:最多同時 120 個瀏覽器,每秒可新開一個。
  • 瀏覽器預設閒置 60 秒後關閉(可延長至 10 分鐘)。
  • 重用 session 可減少冷啟動,也比較不會撞到限制。