Browser Rendering
開啟網頁、擷取畫面、產生 PDF、抓取內容——靠跑在 Cloudflare 網路上的無頭(headless)Chromium 完成。
Browser Rendering 是什麼?
Browser Rendering 給你一個 headless(無頭,也就是沒有可見視窗)的瀏覽器——一個真正的 Chromium——跑在 Cloudflare 網路上。你用程式碼操控它來載入網頁、點擊、輸入、截圖、輸出 PDF 並擷取內容。
它有兩種用法:用簡單的 REST API 端點處理一次性工作(送出網址、拿回截圖),或在 Worker 裡用 Puppeteer 或 Playwright(操控 Chrome 的熱門函式庫)完全程式化地操控。
把它想成一個會用瀏覽器的機器人
想像一個不知疲倦的機器人,它打開 Chrome、造訪任何網頁、拍張照或存成 PDF、複製文字,而且完全不需要螢幕。你用程式碼下指令,它替你點擊。這就是 Browser Rendering。
為什麼要用它?
自己跑 headless Chrome 很吃重:耗記憶體、容易崩潰、又難擴充。Browser Rendering 在你需要時直接給你現成的瀏覽器,而且就在 Workers 旁邊。
截圖與 PDF
把任何網頁變成圖片或可列印的 PDF——很適合做預覽、收據或報表。
抓取動態網站
很多網頁是用 JavaScript 組出內容的。真實瀏覽器看得到完成後的頁面,你才抓得到真正的資料。
餵乾淨資料給 AI
把網頁轉成乾淨的 Markdown 或結構化 JSON,正是 Workers AI 或 RAG 流程的理想輸入。
替你自動擴充
以很低的冷啟動成本開出大量瀏覽器,還能重用工作階段(session)跑得更快。
什麼時候該用它?
連結預覽圖
為社群卡片或儀表板產生網頁的縮圖。
PDF 文件
從 HTML 範本即時產生發票、票券或報表。
資料擷取
從需要 JavaScript 才能呈現的網頁,蒐集價格、列表或文章。
自動化測試
操控真實瀏覽器點過一遍,驗證自家網站運作正常。
怎麼開始用?
最快的方式:REST API
處理一次性工作時,你連 Worker 都不用寫。把網址送到像 /screenshot 這樣的端點,就能拿回結果。其他端點還有 /pdf、/content、/scrape、/snapshot、/json、/links 和 /markdown。
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
安裝函式庫
把 Cloudflare 版的 Puppeteer 套件加進你的 Worker 專案。
npm install @cloudflare/puppeteer加上瀏覽器繫結
在 wrangler.jsonc 宣告一個 browser 繫結,程式裡就能用 env.MYBROWSER。
{ "name": "my-browser-worker", "main": "src/index.js", "compatibility_date": "2025-06-01", "browser": { "binding": "MYBROWSER" } }操控瀏覽器
啟動 Chromium、開一個分頁、前往網址並截圖。用完一定要關閉瀏覽器以釋放資源。
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" } }); } };部署上線
把 Worker 發佈出去,就能從任何地方呼叫。
wrangler deploy
重點概念
無頭瀏覽器
一個沒有可見視窗、照常運作的完整瀏覽器——最適合在伺服器上做自動化。
Puppeteer 與 Playwright
熱門的函式庫,讓你的程式碼告訴瀏覽器要點什麼、輸入什麼、擷取什麼。
REST API 對比繫結
REST 端點快速又免寫程式;Worker 裡的繫結則能逐步完全操控。
工作階段(Session)
跨請求重用一個已暖機的瀏覽器,而不是每次都重開一個——更快也更省。
小提示與限制
記得關閉瀏覽器
做完後請呼叫 browser.close()(或重用 session)。免費方案每天只有 10 分鐘的瀏覽器時間,讓瀏覽器一直開著會白白用掉額度。
- 免費方案:最多同時 3 個瀏覽器,每 20 秒可新開一個,每天合計 10 分鐘。
- Workers 付費方案:最多同時 120 個瀏覽器,每秒可新開一個。
- 瀏覽器預設閒置 60 秒後關閉(可延長至 10 分鐘)。
- 重用 session 可減少冷啟動,也比較不會撞到限制。