n8n 爬蟲 Header 終極指南:除了 User-Agent,這 5 個 HTTP 標頭是你的完美偽裝

爬蟲 header 標頭

你已經學會了如何更換 User-Agent 來偽裝你的數位身分證,也掌握了透過 Proxy 代理伺服器 來變換你的 IP 位址。你以為你的 n8n 爬蟲已經練就了完美的隱身術,但當你挑戰那些防禦更森嚴的網站時,卻可能再次撞上 403 ForbiddenAccess Denied 的高牆。

為什麼會這樣?因為進階的反爬蟲系統,就像一位經驗老到的海關官員。它不僅僅會看你的「護照 (IP 位址)」和「身分證 (User-Agent)」,它還會檢查你填寫的「入境申報單 (HTTP Headers)」,從中尋找任何不合常理的蛛絲馬跡,來判斷你是否為真實的訪客。

如果你的請求中,只設定了 User-Agent,卻缺少了其他所有真人瀏覽器都會自動帶上的標頭 (Header),那麼在伺服器眼中,你就好比一個只帶了身分證、卻對自己要去哪、會說什麼語言都交代不清的可疑份子。

這篇文章將是你的 n8n 爬蟲 Header 終極指南。我們將帶你深入 HTTP 標頭的世界,揭開除了 User-Agent 之外,另外 5 個對於成功偽裝至關重要的標頭的秘密。學會如何設定它們,你將能建構出一個幾乎與真人瀏覽器無異的「請求指紋」,突破更嚴密的防線。

為什麼只改 User-Agent 還不夠?認識伺服器的「請求指紋」分析

在我們之前的教學中,我們將 User-Agent 比喻為爬蟲的「數位身分證」。這是一個很好的起點,但一個專業的反爬蟲系統,看的不只是一張證件,而是一整套的「行為與特徵」,我們稱之為「請求指紋 (Request Fingerprint)」。

你的每一次網頁瀏覽,瀏覽器在發送請求時,除了 User-Agent,還會自動附上一系列的 HTTP 標頭,來向伺服器說明自己的各種「偏好」與「能力」,例如:

  • 我偏好接收什麼語言的內容? (Accept-Language)
  • 我是從哪個頁面連結過來的? (Referer)
  • 我能理解哪些類型的檔案格式? (Accept)
  • 我是否支援 Gzip 壓縮? (Accept-Encoding)

一個來自 n8n HTTP Request 節點的預設請求,可能只包含了最基本的幾個標頭。而一個來自 Chrome 瀏覽器的請求,則可能包含了十幾個精心設定好的標頭。當伺服器看到一個請求的「指紋」與主流瀏覽器的標準指紋差異過大時——例如,一個自稱是 Chrome 的訪客,卻沒有發送 Accept-Language 標頭——它就有充分的理由懷疑這是一個自動化腳本,並予以攔截。

你的瀏覽器到底送出了什麼?用開發者工具一窺 Header 的全貌

要完美偽裝,我們首先要知道「真人」的標準長什麼樣子。我們的最佳情報來源,就是 Chrome 開發者工具。

  1. 用 Chrome 瀏覽器,以無痕模式打開一個分頁(避免舊的 Cookie 干擾)。
  2. 按下 F12 打開開發者工具,切換到「網路 (Network)」面板。
  3. 勾選「停用快取 (Disable cache)」。
  4. 在網址列輸入你想爬取的目標網址,並按下 Enter。
  5. 在 Network 面板的請求列表中,點擊第一個、通常是主文件 (document) 的那個請求。
  6. 在右側視窗中,向下捲動,找到「請求標頭 (Request Headers)」區塊。

映入你眼簾的,就是你的瀏覽器剛剛發送給伺服器的、最真實、最完整的 HTTP 標頭清單。這就是我們要模仿的「完美範本」。

爬蟲 header 標頭

爬蟲必備的 5 大 HTTP 標頭詳解

在眾多標頭中,除了 User-Agent,以下五個標頭對於繞過反爬蟲機制至關重要。

1. Accept-Language

  • 作用: 告訴伺服器,你的瀏覽器偏好接收什麼語言的內容,以及其優先級。
  • 為何重要: 這是最常被檢查的標頭之一。如果你的 User-Agent 宣稱自己是來自台灣的 Chrome 用戶,但你卻沒有發送這個標頭,或是發送了一個 en-US (美國英文) 的標頭,這就是一個非常明顯的破綻。
  • 範例值: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7 (代表最想要繁體中文,其次是通用中文,再次是美國英文…)

2. Referer

  • 作用: 告訴伺服器,你是「從哪個頁面」連結到當前頁面的。
  • 為何重要: 許多網站會檢查這個標頭,來防止「圖片盜連」或惡意的跨站請求。對於爬蟲來說,一個合理的 Referer 能讓你的行為看起來更像真人。例如,在爬取商品頁面前,先去爬取它的分類列表頁,然後在請求商品頁面時,將 Referer 標頭設定為分類列表頁的 URL。
  • 範例值: https://www.example.com/products/category-a/

3. Accept

  • 作用: 告訴伺服器,你的瀏覽器能「接受」並處理哪些類型的內容格式 (MIME Type)。
  • 為何重要: 真實瀏覽器的 Accept 標頭通常是一長串複雜的字串,代表它什麼都能處理。而一個預設的爬蟲請求,可能只會發送一個極簡的 */*。這種差異很容易被偵測。直接從你的瀏覽器複製這份「能力清單」,是最保險的做法。
  • 範例值: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8

4. Accept-Encoding

  • 作用: 告訴伺服器,你的瀏覽器支援哪些內容壓縮演算法,例如 gzip, deflate, br (Brotli)。
  • 為何重要: 現代的瀏覽器都會支援壓縮,來提升網頁載入速度。如果你的請求中沒有這個標頭,等於是告訴伺服器:「我是一個很古老的客戶端,請給我未經壓縮的、最肥大的原始檔案。」這同樣是一個可疑的訊號。
  • 範例值: gzip, deflate, br, zstd

5. Cookie

  • 作用: 處理需要登入才能看的資料時,用來向伺服器提交你的 Session 憑證。
  • 為何重要: 即使是對於不需登入的頁面,網站也常會用 Cookie 來存放一些基本的設定或追蹤碼。一個完全沒有 Cookie 的請求,也可能被視為首次訪問的機器人。

實戰演練:如何在 n8n 中完整複製一個「真實瀏覽器」的請求標頭

現在,讓我們將理論付諸實踐。

  1. 情報收集: 按照第二大點的教學,使用 Chrome 開發者工具,找到你的瀏覽器在訪問目標網站時,所發送的所有「請求標頭 (Request Headers)」。
  2. n8n HTTP Request 節點設定:
    • 在「Headers」區塊,點擊多次「Add Header」。
    • 將你在開發者工具中看到的那些關鍵標頭(User-Agent, Accept-Language, Accept, Accept-Encoding 等),一個一個地、完整地複製並貼到 n8n 的設定中。
    • Name 欄位對應標頭名稱,Value 欄位對應標頭的值。
  3. 執行與驗證:
    • 執行節點。你會發現,許多之前會回傳 403 Forbidden 的網站,現在都向你敞開了大門,回傳了 200 OK 的成功狀態碼。

透過這個過程,你的 n8n HTTP Request 節點,已經不再是一個赤裸裸的 axios 機器人,而是一個披著完美 Chrome 外衣的頂級偽裝者。

Header 偽裝的最佳實踐與道德提醒

  • 保持一致性: 你的所有 Header 應該要能夠自圓其說。例如,一個宣稱自己是 Chrome/128User-Agent,就不應該搭配一個非常古老的 Accept 標頭。這也是為什麼「直接從你自己的瀏覽器複製」是最安全的方法。
  • 隨版本更新: 瀏覽器會定期更新,其 User-Agent 和其他標頭也會隨之變化。如果你的爬蟲需要長期運行,建議每隔幾個月,就重新檢查並更新你使用的標頭組合。
  • 道德準則: 我們學習這些技巧,是為了能夠更穩定地獲取公開的資訊,進行有價值的數據分析或整合。請務必遵守目標網站的 robots.txt 規範,並設定合理的請求延遲,尊重對方的伺服器資源,切勿用於惡意攻擊或濫用行為。
爬蟲 header 標頭

結語

HTTP 標頭是網路通訊的基石,也是反爬蟲攻防戰中最細膩的戰場。當你從只知道 User-Agent,進階到能夠精心建構一整套足以以假亂真的「請求指紋」時,你才真正地從一位爬蟲的「使用者」,蛻變為一位懂得底層邏輯的「架構師」。

這不僅僅是複製貼上幾個字串,更是對網路運作原理的一次深度洞察。現在,就打開你的開發者工具,開始探索你瀏覽器每一次點擊背後的秘密,並將這些情報,賦予你無所不能的 n8n 工作流吧!

更多精選文章請參考

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

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

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

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

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

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

發佈留言

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

返回頂端