突破 Web Request 限制:FlareSolverr 代理服務部署與應用指南
在自動化工作流或網頁資料存取時,常常會遇到目標網站啟用防機器人機制(如 Cloudflare 挑戰頁面),導致標準 HTTP 請求回傳 403 Forbidden 或 503 Service Unavailable。 此時,傳統的請求節點無法執行 JavaScript 驗證,流程就會中斷。
FlareSolverr 正是為了解決這個難題而設計的代理伺服器!
FlareSolverr 的運作機制
FlareSolverr 結合了無頭瀏覽器(Headless Browser)技術,流程如下:
- 接收指令:用戶端向 FlareSolverr 發送包含目標 URL 的 POST 請求。
- 模擬環境:FlareSolverr 在背景啟動 Chromium/ WebKit 無頭瀏覽器實例。
- 通過挑戰:瀏覽器自動處理 JavaScript 驗證、瀏覽器特徵、TLS 指紋等挑戰。
- 回傳內容:頁面載入並通過驗證後,將 HTML 原始碼與 Cookie 回傳給用戶端。
部署方式
建議使用 Docker 來部署 FlareSolverr,確保環境穩定且依賴簡單。
Docker 單機部署
快速啟動單一實例:
docker run -d \
--name=flaresolverr \
-p 8191:8191 \
-e LOG_LEVEL=info \
--restart unless-stopped \
ghcr.io/flaresolverr/flaresolverr:latest
Docker Compose 佈署
適合生產環境或與 n8n 等服務串接:
version: "3.8"
services:
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=info
- TZ=Asia/Taipei
ports:
- "8191:8191"
restart: unless-stopped
使用方法與 API 調用
部署完成後,請將原本直接對目標網站的請求,改為對 FlareSolverr 的 API 端口(預設 8191)發送。
基本請求格式
URL: http://:8191/v1
Method: POST
Payload:
{
"cmd": "request.get",
"url": "https://target-website.com",
"maxTimeout": 60000
}
響應結構與處理建議
FlareSolverr 會回傳結構化 JSON,主要內容在 solution.response 欄位(即網站 HTML)。
開發時建議進行防禦性編程,僅在 status 為 "ok" 時提取內容:
{
"status": "ok",
"solution": {
"response": "...",
"cookies": [ ... ]
},
...
}
n8n 工作流整合設定
在 n8n 中,你需要將原本對準 RSS 網址的請求,改為向 FlareSolverr 發送 POST 請求。
HTTP Request 節點參數:
- Method:
POST - URL:
http://YOUR_SERVER_IP:8191/v1 - Body Content Type:
JSON - JSON Parameters:
cmd:request.geturl:https://target-rss-site.com/feedmaxTimeout:60000
防禦性資料處理 (Code Node):
由於 FlareSolverr 回傳的是一個 JSON 物件,內容藏在 solution.response 中,建議使用以下代碼提取並清理:
// 確保內容存在並進行防禦性清理
try {
const rawHtml = $node["HTTP Request"].json.solution.response;
// 移除可能干擾 RSS 解析的非法換行或空白
const cleanRss = rawHtml.trim();
return {
rss_content: cleanRss,
user_agent: $node["HTTP Request"].json.solution.userAgent,
timestamp: $now.toISO()
};
} catch (e) {
return { error: "解析失敗,請檢查 FlareSolverr 狀態" };
}
注意事項
- 資源管理:FlareSolverr 會消耗較多 RAM(因為它啟動了實體瀏覽器)。如果你的 n8n 同時啟動多個爬蟲任務,請務必給予 Docker 容器足夠的記憶體限制。
- Cookie 複用:對於需要登入或更高難度的網站,可以從
solution.cookies提取 Cookie,並在後續的請求中直接傳入,避免重複觸發 5 秒盾。 - 安全性:絕對不要將 8191 端口對外公開。建議在 Docker Compose 中移除
ports映射,並透過 Docker 內部網路名稱(例如http://flaresolverr:8191/v1)讓 n8n 訪問。