
在你興高采烈地用 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。
- 打開 Google 搜尋。
- 輸入關鍵字「what is my user agent」。
- Google 通常會在最頂端,直接顯示出你當前瀏覽器的完整 User-Agent 字串。將這整串文字完整地複製下來。
步驟二:在 n8n HTTP Request
節點中設定
- 在 n8n 中,打開你那個會收到 403 錯誤的
HTTP Request
節點。 - 在設定面板中,找到下方的「Headers」區塊。
- 點擊「Add Header」。
- Name: 輸入
User-Agent
。(注意大小寫,雖然通常不區分,但標準寫法是如此) - Value: 貼上你剛剛從 Google 搜尋結果中,完整複製下來的那一長串 User-Agent 字串。
就這麼簡單!你的 n8n 爬蟲現在已經成功地「偽裝」成了一個來自你電腦的、真實的 Chrome 瀏覽器。

實戰演練:從 403 Forbidden 到 200 OK 的神奇轉變
讓我們來實際操作一次。假設我們想抓取某個需要驗證 User-Agent 的新聞網站首頁。
【偽裝前】
HTTP Request
節點設定:- URL:
https://example-news-site.com
- Headers: 留空。
- URL:
- 執行結果: 節點失敗,
Output
中顯示statusCode: 403
,statusMessage: Forbidden
。
【偽裝後】
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
- Name:
- URL:
- 執行結果: 節點成功執行,
Output
中顯示statusCode: 200
,statusMessage: OK
,並且body
欄位中,包含了完整的網站 HTML 原始碼!
透過這一個小小的 Header 設定,我們就輕易地繞過了網站的第一道防線。
進階技巧與下一步:從單一偽裝到輪換 User-Agent
雖然設定一個固定的 User-Agent 可以解決大部分基礎的反爬蟲,但對於更嚴格的網站,如果你在短時間內,用完全相同的身分證(同一個 User-Agent)發出數百次請求,這本身也是一個可疑的行為模式。
進階技巧:輪換 User-Agent (User-Agent Rotation) 更專業的爬蟲,會準備一個包含數十、數百個常見瀏覽器 User-Agent 的列表。然後,在每一次發送請求時,都從這個列表中隨機抽取一個來使用。
你可以在 n8n 中這樣實現:
- 使用
Code
節點,定義一個包含多個 User-Agent 字串的陣列。 - 使用
Math.random()
來隨機選擇一個陣列中的元素。 - 將這個隨機選出的 User-Agent,輸出到一個名為
random_user_agent
的欄位。 - 在
HTTP Request
節點的User-Agent
Header 中,使用 Expression{{ $json.random_user_agent }}
來動態設定。
下一步的挑戰: User-Agent 只是反爬蟲世界中的第一關。更進階的網站,還會使用 IP 位址限制、JavaScript 挑戰、人機驗證 (CAPTCHA)、瀏覽器指紋等更複雜的技術。當你遇到這些挑戰時,就可能需要動用到 IP 代理池 (Proxy Pool) 或 Browserless 等更強大的武器了。

結語
收到你的第一個 403 Forbidden
,不是挫敗,而是一個里程碑。它代表你已經從爬取「不設防」的網站,開始進入到一個需要鬥智鬥勇的、更真實的網路攻防世界。
而 User-Agent 偽裝,就是你學會的第一個反偵察技巧。掌握了這個簡單卻極其有效的設定,你將能成功地打開 80% 以上曾將你拒之門外的網站大門。現在,就去找出那個曾經讓你碰壁的網站,換上你準備好的「數位身分證」,再次發出請求,享受成功繞過防線、取得數據的喜悅吧!
更多精選文章請參考
n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析
開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案
n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!
n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!