
在上一篇關於靜態與動態網站爬蟲差異的教學中,我們學到了爬取動態網站 (SPA) 的王道,是找出其背後隱藏的資料 API。但如果你遇到了更頑固的對手呢?
- 網站的 API 經過了複雜的加密或驗證,讓你難以直接模仿。
- 網站的資料是透過 WebSocket 即時推送的,根本沒有一個固定的 API 端點。
- 你想抓取的,不僅僅是數據,而是整個網頁被使用者「看到」的最終樣貌,甚至是一張完整的螢幕截圖。
當「API 偵探」之路走到盡頭時,我們就需要請出 n8n 動態網站爬蟲的終極秘密武器——無頭瀏覽器 (Headless Browser) 服務,而 Browserless.io 正是這個領域的佼佼者。
這篇文章將是你的 n8n 整合 Browserless 的完整實戰指南。我們將帶你深入理解無頭瀏覽器的運作原理,手把手教你如何將 n8n 與 Browserless 服務對接,並透過實戰案例,解決那些傳統 HTTP Request
節點無法應對的 JavaScript 渲染抓取難題。
當「API 偵探」之路行不通:為什麼你需要無頭瀏覽器 (Headless Browser)?
讓我們快速回顧一下動態網站的問題根源:n8n 基礎的
HTTP Request
節點,就像一個不會使用瀏覽器的機器人,它只會從伺服器取回一個包含 HTML 骨架和一堆 JavaScript 程式碼的「空餐盤」,而無法執行 JavaScript 來動態載入真正的數據 。
當我們無法輕易地找到並直接呼叫那些載入數據的 API 時,我們就需要一個更強大的工具,一個能夠完整模擬真人瀏覽行為的機器人。這,就是「無頭瀏覽器」的核心價值。
什麼是無頭瀏覽器? 你可以把它想像成一個在伺服器背景運行的、沒有圖形介面的、可被程式控制的真實 Chrome 瀏覽器。
它的運作流程是:
- 接收指令: n8n 告訴它:「請幫我打開這個網址。」
- 完整渲染: 無頭瀏覽器會像你的 Chrome 一樣,載入 HTML、下載 CSS、並完整地執行所有的 JavaScript 程式碼。它會耐心等待所有 API 呼叫完成,所有數據都被動態地填入頁面。
- 回傳結果: 當頁面完全渲染成你眼中看到的「最終樣貌」後,無頭瀏覽器再將這份包含所有動態數據的完整 HTML,回傳給 n8n。
透過這個過程,n8n 就能夠抓取到任何最頑固的動態網站內容。
認識 Browserless.io:你的雲端 Chrome 瀏覽器大軍
Browserless.io 是一個將無頭瀏覽器「服務化」的平台,它免去了你自己維護 Chrome 伺服器叢集的複雜性。n8n 官方也為其打造了專屬的整合節點。
你可以透過兩種方式使用 Browserless:
- Cloud (雲端版): 直接註冊 Browserless.io 的帳號,他們會提供給你一組 API Key。你可以在他們的雲端伺服器上,執行你的爬蟲任務。這種方式最簡單,有免費的試用額度,超出則需付費。
- Self-Hosted (自架設版): Browserless 也提供了 Docker Image,讓你可以將整套服務部署在自己的伺服器上,實現私有化、不受限制的無頭瀏覽器服務。
對於大多數使用者來說,從雲端版的免費額度開始,是最快的入門方式。
串接第一步:取得 Browserless API 金鑰並設定 n8n 憑證
- 註冊 Browserless.io 帳號: 前往 Browserless.io 官網,註冊一個免費帳號。
- 取得 API Key: 登入後,在你的儀表板 (Dashboard) 上,你會清楚地看到一組 API token。將這組金鑰複製下來。
- 在 n8n 中建立憑證:
- 在 n8n 中新增一個
Browserless
節點。 - 在
Credential
欄位點擊「Create New」。 - Authentication: 選擇
Header Auth
。 - Name:
X-API-KEY
- Value: 貼上你剛剛複製的 Browserless API token。
- 重要: 在
Options
中,點擊Add Option
。- Name:
baseURL
- Value:
https://chrome.browserless.io
- Name:
- 儲存憑證。
- 在 n8n 中新增一個

Browserless
節點核心操作:不只抓內容,還能截圖與執行自訂腳本
n8n 的 Browserless
節點提供了多種強大的操作模式。
Get Content
(獲取內容): 這是最核心的爬蟲功能。它會返回指定 URL 經過完整 JavaScript 渲染後的 HTML 內容。你可以將其輸出,直接連接到HTML Extract
節點進行後續的資料提取。Take Screenshot
(螢幕截圖): 一個非常實用的功能,可以對指定網頁進行截圖,並回傳圖片的二進制資料。你可以設定截取整個頁面 (Full Page
) 或只有可視範圍。Run Custom Function
(執行自訂函式): 對於進階使用者,這個模式允許你直接在 Browserless 的瀏覽器環境中,執行你自己的 Puppeteer 程式碼,實現更複雜的互動,例如模擬點擊按鈕、填寫表單等。Resolve a Puppeteer method
(解析 Puppeteer 方法): 這是一個簡化的自訂函式模式,讓你無需撰寫完整函式,就能呼叫 Puppeteer 的特定方法。
實戰演練:爬取 JavaScript 動態生成的商品價格
讓我們來解決上一篇文章中提到的那個「抓不到價格」的經典問題。
- 目標: 爬取一個使用 JavaScript 動態載入價格的電商商品頁面。
- 流程設計:
Start
->Browserless (Get Content)
->HTML Extract
->Set (Clean Data)
Start
節點: 手動觸發,並用一個Set
節點設定url
變數為目標商品頁網址。Browserless
節點:- Credential: 選擇你設定好的 Browserless 憑證。
- Operation:
Get Content
。 - URL (Expression):
{{ $json.url }}
。 - Options > Add Option > Wait For: 這是一個非常重要的選項!有時候頁面上的特定元素(例如價格)是延遲載入的。你可以在這裡填入該元素的 CSS Selector,例如
.price-tag
。Browserless 會一直等到這個元素出現在頁面上,才回傳 HTML,確保你不會抓到不完整的內容。
HTML Extract
節點:- 將
Browserless
節點的HTML
輸出端,連接到此節點。 - Source Data:
From Previous Node's 'HTML' Field
。 - Extraction Values:
- Key:
price
- CSS Selector:
.price-tag
- Return Value:
Text
- Key:
- 將
Set
節點:- 對抓取到的價格文字,進行我們在資料清洗教學中學到的技巧,例如去除貨幣符號和空白。
執行這個流程,你就會發現,之前 HTTP Request
節點完全抓不到的價格,現在已經被 Browserless
節點完美地渲染出來,並被 HTML Extract
成功捕獲了!
進階應用與最佳實踐:自動化網頁截圖與處理延遲載入
自動化網頁快照存檔
- 目標: 每天定時為一個重要的網頁(例如競品首頁)進行全頁截圖,並以日期命名存檔到 Google Drive。
- 流程:
Schedule
->Browserless (Screenshot)
->Google Drive
Browserless
節點設定:
- Operation:
Take Screenshot
- URL: 輸入你要截圖的網址。
- Options > Full Page:
true
Browserless
會輸出一筆二進制資料,你可以直接將其連接到 Google Drive
節點的 Binary Data
輸入端,並動態設定檔案名稱。
最佳實踐
- 何時使用: 只有在你確定「尋找 API」的方法行不通,或你需要進行網頁截圖時,才動用 Browserless。因為它的執行速度較慢,且雲端服務有成本考量。
- 善用
Wait For
: 對於載入緩慢的動態網站,設定Wait For
或Wait for Timeout
是確保抓取成功的關鍵。 - 注意資源消耗: 如果你自架設 Browserless,請注意它對 CPU 和記憶體的消耗較大。

結語
n8n 與 Browserless 的整合,為你的自動化爬蟲工具箱,增添了一把削鐵如泥的「屠龍刀」。它讓你能夠正面迎戰那些最頑固、最複雜的 JavaScript 動態渲染網站,確保沒有任何你想抓取的數據,能夠逃出你的手掌心。
雖然它的成本和效能代價較高,應作為「攻堅」時的選擇,但掌握了這項技巧,你就真正擁有了解決所有網頁爬取難題的信心與能力。現在,就去找一個曾經讓你束手無策的動態網站,用 Browserless 的力量,再次挑戰它吧!
更多精選文章請參考
n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析
開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案
n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!
n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!