n8n 爬蟲登入實戰:Cookie 與 Session 管理終極指南,抓取需登入才能看的資料

n8n 登入管理

你是否在 n8n 爬蟲的道路上,遇到了那扇最堅固、也最誘人的大門——會員登入?你想要抓取的,不再是公開的商品列表或新聞標題,而是登入後才能看到的個人化資訊:你的銀行帳戶餘額、線上課程的學習進度、社群媒體的私信內容,或是公司內部系統的數據報表。

當你嘗試用 HTTP Request 節點直接訪問這些頁面時,只會得到一個被重新導向到登入頁的結果。你意識到,你的爬蟲需要先學會如何像真人一樣,「登入」這個網站,才能進到內部抓取寶貴的資料。

這就是「驗證後爬取 (Authenticated Scraping)」的領域,而掌握它的關鍵,在於理解 SessionCookie 的運作機制。

這篇文章將是你的 n8n 爬蟲登入終極指南。我們將從 Session 與 Cookie 的基本概念講起,手把手教你兩種核心的登入策略:一種是簡單直觀的「每次自動化登入」,另一種則是更高效、更專業的「重複使用 Cookie」。學會這些技巧,你將能突破任何登入牆的限制,讓你的 n8n 爬蟲具備存取網際網路任何角落資訊的能力。

為什麼需要登入?揭開 Session 與 Cookie 的神秘面紗

在我們動手之前,必須先理解網站是如何「記住」你的登入狀態的。這個過程,就像是你去參加一場大型音樂祭:

  1. 登入 (驗票入場): 你在入口處(登入頁面),出示你的身份證和門票(輸入帳號和密碼)。保全(伺服器)驗證無誤後,會在你手腕上,繫上一條獨一無二的 VIP 手環
  2. Session (伺服器紀錄): 同時,保全會在他的名冊上,記錄下「這條手環(Session ID)對應的是王小明這位 VIP 客戶」。這份名冊,就是伺服器端的 Session
  3. Cookie (客戶端憑證): 你手上的那條 VIP 手環,就是儲存在你瀏覽器中的 Cookie
  4. 後續訪問 (憑手環暢行無阻): 接下來,當你想進入任何 VIP 區域(網站的會員專區)時,你不再需要每次都掏出身份證和門票。你只需要向保全出示你的手環 (在每個 HTTP 請求中,自動帶上 Cookie),保全在他的名冊上一查,確認這是有效的 VIP 手環,就會立刻放你通行。

爬蟲登入的目標: 我們的 n8n 爬蟲,就是要先模擬「驗票入場」的過程,拿到那條關鍵的「VIP 手環 (Cookie)」,然後在後續的所有請求中,都戴著這條手環,讓伺服器相信我們是合法的登入使用者。

方法一 (基本功):使用 Puppeteer 每次自動化登入

這是最直觀、最容易理解的登入方式:讓 n8n 在每一次執行工作流時,都完整地模擬一次真人從頭到尾的登入流程。我們需要使用 Puppeteer (透過 Browserless 節點) 來完成這個任務。

  • 適用情境: 網站的登入機制非常嚴格,Session Cookie 的有效期很短,或是每次登入都會變動。
  • 優點: 邏輯簡單,每次都確保是全新的、有效的登入狀態。
  • 缺點: 效率較低(每次都要等待登入頁面載入與跳轉),且頻繁的登入行為,可能會觸發網站的異常登入警報。

實戰腳本:

以下是一個在 Browserless 節點的 Run Custom Function 中,執行自動化登入的範例腳本:

JavaScript

// page 是 n8n 傳入的 Puppeteer 頁面物件

// 1. 前往登入頁面
await page.goto('https://example.com/login');

[cite_start]// 2. 使用 waitForSelector,確保表單元素已載入 [cite: 5]
await page.waitForSelector('input[name="username"]');
await page.waitForSelector('input[name="password"]');

// 3. 填寫帳號密碼 (建議從 n8n Credential 傳入)
await page.type('input[name="username"]', 'YOUR_USERNAME');
await page.type('input[name="password"]', 'YOUR_SECRET_PASSWORD');

// 4. 點擊登入按鈕,並等待頁面跳轉完成
await Promise.all([
  page.click('button[type="submit"]'),
  page.waitForNavigation(),
]);

// 5. 現在,我們已經在登入後的會員頁面了
// 可以繼續在這裡進行爬取,或回傳 HTML 供後續節點使用
const memberPageHtml = await page.content();
return {
  html: memberPageHtml
};
n8n 登入管理

方法二 (進階術):登入一次,重複使用 Cookie 實現高效爬取

這才是專業爬蟲玩家的首選策略。核心思想是:我們不需要每次都去入口排隊驗票,我們只需要拿到那條可以長期使用的 VIP 手環 (Cookie) 就夠了。

這個策略分為「獲取 Cookie」和「使用 Cookie」兩個獨立的工作流。

步驟一:建立「獲取 Cookie」工作流 (只需執行一次)

這個工作流的目標,就是用 Puppeteer 登入一次,然後把登入成功後的所有 Cookies 都抓出來,儲存起來。

  1. 建立 Puppeteer 登入腳本: 使用與方法一完全相同的 Browserless 腳本來完成登入。
  2. 提取 Cookies:page.waitForNavigation() 之後,也就是確認登入成功後,加入以下指令:JavaScript// ... 登入成功後 ... // 使用 page.cookies() 提取當前頁面的所有 Cookies const cookies = await page.cookies(); // 將 Cookies 作為 JSON 回傳 return { cookies: cookies };
  3. 儲存 Cookies: 執行這個工作流後,你會在 Browserless 節點的輸出中,得到一個包含了多個 Cookie 物件的陣列。將這個完整的 JSON 陣列複製下來,並儲存在一個安全的地方,例如 n8n 的 Static Data,或是一個本地的 .json 檔案。

步驟二:建立「高效爬取」工作流 (可重複執行)

現在,我們有了 VIP 手環,就不再需要 Puppeteer 這個龐大的工具了。我們可以使用輕量級的 HTTP Request 節點,直接戴著手環去存取會員區。

  1. Set 節點 (讀取 Cookie):
    • 在流程開頭,新增一個 Set 節點。
    • 建立一個名為 cookies 的欄位,並將你上一步儲存的 Cookie JSON 陣列,完整地貼到 Value 欄位中。
  2. HTTP Request 節點:
    • URL: 輸入你要抓取的會員區頁面網址,例如 https://example.com/dashboard
    • Options > Header > Cookie:Cookie 欄位,我們需要將 Cookie 陣列,轉換成瀏覽器看得懂的 key=value; 字串格式。使用以下 Expression:JavaScript{{ $json.cookies.map(c => `${c.name}=${c.value}`).join('; ') }}
    • Headers > User-Agent: 記得也要加上你偽裝的 User-Agent

執行這個流程,你會發現 HTTP Request 節點成功地抓回了登入後才能看到的頁面內容!這個流程的執行速度,將會是 Puppeteer 登入方法的數十倍甚至上百倍。

實戰演練:建立一個自動抓取論壇「私信」的 n8n 流程

目標: 每天定時登入一個論壇,檢查是否有新的私人訊息,並將其內容發送到 Telegram。

  1. 執行一次「獲取 Cookie」工作流:
    • 使用 Puppeteer 登入該論壇,成功後,將論壇的 Session Cookies 儲存下來。
  2. 建立「每日檢查私信」工作流:
    • Schedule 節點: 設定每天早上 8 點觸發。
    • Set 節點: 讀取並準備好儲存的 Cookies。
    • HTTP Request 節點:
      • 設定好 Cookie Header。
      • URL 指向論壇的「私信列表 API」(你需要透過逆向工程技巧找到這個 API)。
    • IF 節點: 判斷 API 回傳的私信列表中,是否有新訊息。
    • Telegram 節點: 如果有新訊息,就將其內容發送到你的 Telegram。

安全第一:如何在 n8n 中妥善保管你的帳號密碼?

在所有需要輸入帳號密碼的環節(特別是 Puppeteer 腳本中),絕對不要將你的密碼以明文形式直接寫在節點裡。

最佳實踐:

  1. 在 n8n 左側邊欄,進入「Credentials」。
  2. 點擊「Add credential」,選擇 Header AuthGeneric Credential Type
  3. 將你的帳號和密碼,分別存放在不同的欄位中,並給它一個好記的名字,例如 MyForumLogin
  4. 在 Puppeteer 腳本中,你需要先用一個 Get Credential 節點來讀取它,然後再透過 context 傳入 Browserless 節點,以確保密碼永遠不會暴露在工作流的程式碼中。
n8n 登入管理

結語

處理需要登入的網站,是爬蟲技術從入門到進階的分水嶺。它考驗的不僅是你操作節點的能力,更是你對網頁驗證機制 (Authentication) 的理解。

今天,我們學會了兩種核心策略:

  • Puppeteer 自動登入: 簡單暴力,適用於 Session 效期短的網站。
  • Cookie 重複使用: 高效專業,是大規模、高頻率爬取的首選。

請記住,Cookie 就是你穿梭在會員專區的通行證。學會如何獲取、保管並重複使用它,你就能夠解鎖 n8n 爬蟲的全部潛力,將任何需要登入才能看見的寶貴數據,都轉化為你自動化流程中的一部分。

更多精選文章請參考

n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析

開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案

n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!

n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!

【n8n 教學】最強 n8n 網頁爬蟲指南,免寫程式也能輕鬆抓取網站資料!

【n8n 教學全攻略】2025最新!從入門到串接實戰,打造你的自動化工作流

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端