破解你的第一個 403 Forbidden:n8n 爬蟲必學的 User-Agent 反反爬蟲技巧

反反爬蟲 403

在你興高采烈地用 n8n 成功爬取了 PTT、完成了你的第一個爬蟲專案後,你可能開始雄心勃勃地將目標對準了其他網站——可能是某個大型電商平台、一個新聞媒體,或是一個房價查詢網站。

你複製了爬取 PTT 時的成功經驗,將新的網址貼進 HTTP Request 節點,滿心期待地按下執行。然而,這次迎接你的,不再是充滿寶貴資料的 HTML 原始碼,而是一個冰冷無情的紅色錯誤訊息:「403 Forbidden」。

這個「禁止訪問」的錯誤,就像一堵高牆,擋在了你和目標數據之間。這不是你的 n8n 設定有誤,也不是網路不通。你遇到的,是每一位爬蟲學習者的成年禮——你的第一個「反爬蟲機制 (Anti-Scraping)」。

而所有反爬蟲機制中,最基礎、最常見,也最容易破解的第一道防線,就是基於「User-Agent (使用者代理)」的偵測。這篇文章將帶你化身為一名數位偵探,深入理解什麼是 User-Agent,為什麼網站能靠它來分辨「真人」與「機器人」,並手把手教你如何在 n8n 中完美偽裝,繞過這道防線,讓你再也不怕看到 403 Forbidden。

為什麼 PTT 能爬,這個網站卻不行?初探「反爬蟲」的世界

要理解問題,我們必須先知道,為什麼有些網站(如 PTT 的傳統頁面)可以輕易爬取,而有些網站卻會阻擋你?

網站伺服器就像一個俱樂部的保全。對於一些公開、希望被廣泛索引的網站(像 PTT),保全基本上不怎麼檢查訪客的身份,來者不拒。

但許多商業網站,為了保護自己的數據資產、防止伺服器被惡意爬蟲癱瘓、或是避免價格被競爭對手輕易抓取,會設立更嚴格的門禁。保全會開始檢查訪客的「數位身分證」,試圖分辨出哪些是搭著名車、穿著得體的「真人訪客(瀏覽器)」,哪些又是行為鬼祟、一看就像是自動化程式的「機器人訪客(爬蟲)」。

如果你的爬蟲程式,在發出請求時,沒有攜帶一張看起來像真人的身分證,那麼保全就會毫不留情地將你擋在門外,給你一張「403 Forbidden」的閉門羹。

揭開 User-Agent 的神秘面紗:你的爬蟲的「數位身分證」

這個所謂的「數位身分證」,在網路世界中,最主要的就是 User-Agent

User-Agent 是一個包含在 HTTP 請求標頭 (Header) 中的字串。 它的作用,就是讓你的客戶端(無論是瀏覽器還是 n8n 的爬蟲程式)向網站伺服器「自我介紹」:「你好,我是誰,我用的是什麼作業系統和瀏覽器版本。」

現在,讓我們來看看「真人」和「n8n 爬蟲」的身分證,到底長得多不一樣:

  • n8n HTTP Request 節點的預設 User-Agent:axios/1.6.8 這相當於你的身分證上只寫了「我是機器人」。保全一看就知道你是自動化程式,因為沒有任何一個真人會用 axios 這個程式庫來瀏覽網頁。
  • 你在 Windows 上使用 Chrome 瀏覽器的 User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 這張身分證就詳細多了,它清楚地告訴伺服器:「你好,我來自一台 Windows 10 64 位元的電腦,我使用的瀏覽器核心是 AppleWebKit(像 Gecko),我的瀏覽器是 Chrome 128 版,而且我還相容 Safari。」這看起來就是一個再正常不過的真人訪客。

結論: 大多數基礎的反爬蟲機制,做的就是一件簡單的事:檢查請求中的 User-Agent 字串。如果這個字串看起來不像是一個主流的、真實的瀏覽器,就直接拒絕存取。

偽裝成真人瀏覽器:如何在 n8n 中設定自訂 User-Agent?

既然知道了問題所在,解決方案就變得非常簡單:我們只需要在 n8n 發送請求時,把那張寫著「我是機器人」的身分證,換成一張看起來像「真人」的身分證就可以了。

步驟一:取得你自己的 User-Agent

最簡單、最真實的 User-Agent,就是你現在正在使用的這個瀏覽器的 User-Agent。

  1. 打開 Google 搜尋。
  2. 輸入關鍵字「what is my user agent」。
  3. Google 通常會在最頂端,直接顯示出你當前瀏覽器的完整 User-Agent 字串。將這整串文字完整地複製下來。

步驟二:在 n8n HTTP Request 節點中設定

  1. 在 n8n 中,打開你那個會收到 403 錯誤的 HTTP Request 節點。
  2. 在設定面板中,找到下方的「Headers」區塊。
  3. 點擊「Add Header」。
  4. Name: 輸入 User-Agent。(注意大小寫,雖然通常不區分,但標準寫法是如此)
  5. Value: 貼上你剛剛從 Google 搜尋結果中,完整複製下來的那一長串 User-Agent 字串。

就這麼簡單!你的 n8n 爬蟲現在已經成功地「偽裝」成了一個來自你電腦的、真實的 Chrome 瀏覽器。

反反爬蟲 403

實戰演練:從 403 Forbidden 到 200 OK 的神奇轉變

讓我們來實際操作一次。假設我們想抓取某個需要驗證 User-Agent 的新聞網站首頁。

【偽裝前】

  1. HTTP Request 節點設定:
    • URL: https://example-news-site.com
    • Headers: 留空。
  2. 執行結果: 節點失敗,Output 中顯示 statusCode: 403, statusMessage: Forbidden

【偽裝後】

  1. HTTP Request 節點設定:
    • URL: https://example-news-site.com
    • Headers:
      • Name: User-Agent
      • Value: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
  2. 執行結果: 節點成功執行,Output 中顯示 statusCode: 200, statusMessage: OK,並且 body 欄位中,包含了完整的網站 HTML 原始碼!

透過這一個小小的 Header 設定,我們就輕易地繞過了網站的第一道防線。

進階技巧與下一步:從單一偽裝到輪換 User-Agent

雖然設定一個固定的 User-Agent 可以解決大部分基礎的反爬蟲,但對於更嚴格的網站,如果你在短時間內,用完全相同的身分證(同一個 User-Agent)發出數百次請求,這本身也是一個可疑的行為模式。

進階技巧:輪換 User-Agent (User-Agent Rotation) 更專業的爬蟲,會準備一個包含數十、數百個常見瀏覽器 User-Agent 的列表。然後,在每一次發送請求時,都從這個列表中隨機抽取一個來使用。

你可以在 n8n 中這樣實現:

  1. 使用 Code 節點,定義一個包含多個 User-Agent 字串的陣列。
  2. 使用 Math.random() 來隨機選擇一個陣列中的元素。
  3. 將這個隨機選出的 User-Agent,輸出到一個名為 random_user_agent 的欄位。
  4. HTTP Request 節點的 User-Agent Header 中,使用 Expression {{ $json.random_user_agent }} 來動態設定。

下一步的挑戰: User-Agent 只是反爬蟲世界中的第一關。更進階的網站,還會使用 IP 位址限制JavaScript 挑戰人機驗證 (CAPTCHA)瀏覽器指紋等更複雜的技術。當你遇到這些挑戰時,就可能需要動用到 IP 代理池 (Proxy Pool) 或 Browserless 等更強大的武器了。

反反爬蟲 403

結語

收到你的第一個 403 Forbidden,不是挫敗,而是一個里程碑。它代表你已經從爬取「不設防」的網站,開始進入到一個需要鬥智鬥勇的、更真實的網路攻防世界。

而 User-Agent 偽裝,就是你學會的第一個反偵察技巧。掌握了這個簡單卻極其有效的設定,你將能成功地打開 80% 以上曾將你拒之門外的網站大門。現在,就去找出那個曾經讓你碰壁的網站,換上你準備好的「數位身分證」,再次發出請求,享受成功繞過防線、取得數據的喜悅吧!

更多精選文章請參考

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

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

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

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

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

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

發佈留言

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

返回頂端