如何在 Python Scrapy 中設定與輪替 Proxy 代理伺服器

更新於:

Scrapy 架構在非同步 Twisted 核心之上,內建執行於優先級 750 的 HttpProxyMiddleware,能自動解析賦值給 request.meta['proxy'] 的 http://user:pass@ip:port 連線字串。只需在優先級 740 撰寫一段約 10 行的自訂下載器中介軟體(Downloader Middleware),你的爬蟲就能自動在 VinaProxy 的無限流量靜態 IP 池中平滑輪替。

Scrapy · HTTP Proxy Format
request.meta['proxy'] = 'http://user:pass@ip:port'
獨享IPv4(資料中心)
🇺🇸 United States
有貨
低至
₫20,000 / IP / 月
≈ US$0.74 · 以VND結算
批量階梯價格
  • 1 個IP₫40,000
  • 5+ 個IP₫35,000
  • 10+ 個IP₫25,000
  • 20+ 個IP₫25,000
  • 50+ 個IP₫25,000
  • 100+ 個IP₫25,000
  • 200+ 個IP₫25,000
  • 500+ 個IP₫25,000
  • 1000+ 個IP₫22,000
  • 2000+ 個IP₫20,000
購買United States代理
獨享IPv4(資料中心)
🇬🇧 United Kingdom
有貨
低至
₫20,000 / IP / 月
≈ US$0.74 · 以VND結算
批量階梯價格
  • 1 個IP₫40,000
  • 5+ 個IP₫35,000
  • 10+ 個IP₫25,000
  • 20+ 個IP₫25,000
  • 50+ 個IP₫25,000
  • 100+ 個IP₫25,000
  • 200+ 個IP₫25,000
  • 500+ 個IP₫25,000
  • 1000+ 個IP₫22,000
  • 2000+ 個IP₫20,000
購買United Kingdom代理

Scrapy 代理中介軟體優先序與並行連線控制

因為系統內建的 HttpProxyMiddleware 於優先級 750 執行,負責自 URL 移除 user:pass 並編碼為 Proxy-Authorization 標頭,所以任何替 request.meta['proxy'] 賦值的自訂中介軟體必須設定更低的優先數字(例如 740):

Scrapy 設定項目建議設定值技術功能與核心目的
request.meta['proxy']'http://user:pass@ip:port'指定本次連線經由特定的 VinaProxy Proxy 節點送出
中介軟體優先級740(先於 750)確保請求在進入內建 HttpProxyMiddleware 之前已完成 Proxy 指派
CONCURRENT_REQUESTS_PER_IP2 到 4限制單一 Proxy IP 的同時連線數,預防遭遇目標伺服器 HTTP 429 限速
AUTOTHROTTLE_ENABLEDTrue依據目標網站的實際回應延遲自動調適爬取間隔時間

大規模 Scrapy 爬蟲專案的最佳實踐

  • 在中介軟體的 from_crawler() 方法中預先載入 VinaProxy Proxy 清單,並於 process_request() 內部以 request.meta['proxy'] = random.choice(self.proxies) 隨機選取節點
  • 一併啟用 RANDOMIZE_DOWNLOAD_DELAY = True 與 DOWNLOAD_DELAY = 1.0,使每個 IP 的存取間隔呈現自然隨機化特徵
  • 當遇到重試錯誤碼(429 或 503)時,在重新排入請求佇列前更換一個新的 Proxy IP

操作步驟

  1. 1

    將 Proxy 清單格式化為 http://user:pass@ip:port

    將 VinaProxy 代理清單貼入我們的 Proxy 格式轉換工具 快速產生標準 URL 格式。

  2. 2

    在 middlewares.py 中建立 ProxyPoolMiddleware

    定義 process_request(self, request, spider) 並設定 request.meta['proxy'] = random.choice(self.proxies)。

  3. 3

    於 settings.py 中以優先級 740 註冊中介軟體

    在 DOWNLOADER_MIDDLEWARES 內新增 'myproject.middlewares.ProxyPoolMiddleware': 740,並設定 CONCURRENT_REQUESTS_PER_IP = 2。

  4. 4

    透過 scrapy shell 或爬蟲命令驗證運作

    對 https://vinaproxy.com/api/my-ip 發出測試請求,確認輪替機制與身分認證正常運作。

常見問題

為什麼將自訂 Scrapy Proxy 中介軟體設定為優先級 800 時會失效?

Scrapy 內建的 HttpProxyMiddleware 執行於優先級 750。如果自訂中介軟體設為 800(排在 750 之後),URL 中的 user:pass 將無法正確轉換為 Proxy-Authorization 標頭。請務必將優先序設定在 750 之前(如 740)。

Scrapy 是否會對每個 Proxy 維持持續連線?

是的。Twisted 連線池會為每個 Proxy 端點維護持久的 TCP keep-alive 連線以提升傳輸效率。

執行數百萬頁面的大規模爬蟲時,VinaProxy 代理是否計算額外流量?

不會。所有 VinaProxy 專屬 IPv4 與靜態 ISP 方案皆提供每月無上限數據流量。

利用不限流量的靜態 IP 池大幅擴充你的 Scrapy 爬蟲

支援全球 7 國高品質專屬 IPv4 與靜態 ISP 代理,即時開通免等待。

購買 Scrapy 代理

相關文章

依平台選擇代理
網路爬蟲專用代理:為 24/7 爬蟲打造的不限流量獨享 IPv4 與 ISP 代理池
為 Python、Playwright、Selenium 與 Scrapy 提供高速 HTTP(S) 獨享 IPv4 與靜態 ISP Proxy,享無限月度流量。
代理設定教學
如何在Python Requests中使用代理(HTTP/HTTPS與Session連線池)
在Python requests與requests.Session()中配置帶認證的HTTP(S)代理。解決407 ProxyError例外並實現靜態IP池輪換。
代理設定教學
如何在 Playwright 中設定 Proxy(瀏覽器全域與 Per-Context 驗證)
在 Node.js 與 Python 的 Playwright 中設定具備帳密驗證的 HTTP(S) 代理。透過 BrowserContext 在單一瀏覽器處理程序中分配多個獨立靜態 IP。
免費工具
批次 Proxy 格式轉換工具(100% 瀏覽器本地端安全處理)
100% 瀏覽器端批次代理格式轉換工具。支援在 ip:port:user:pass、user:pass@ip:port、http:// URL、SOCKS5 URI、JSON 陣列及 FoxyProxy 匯入檔之間即時轉換。
依平台選擇代理
SEO 與 SERP 排名追蹤專用代理:精準監測 7 國搜尋引擎排名
追蹤精準在地化關鍵字排名,審查地理重定向,並使用不限流量獨享 IPv4 與靜態 ISP Proxy 執行 Screaming Frog 網站爬取。
依平台選擇代理
Amazon 專用 Proxy:徹底隔離 Seller Central、KDP 與 Merch 帳號關聯風險
杜絕 Amazon Seller Central、KDP 及 Merch on Demand 帳號關聯停權。提供美國靜態 ISP 與英國/日本獨享 IPv4 代理。
IPV4 · united states
美國獨享IPv4代理:專用於大數據擷取、SEO追蹤與廣告驗證的高速美國IP
美國獨享IPv4代理:專用於資料爬取、排名追蹤、廣告驗證及亞馬遜調研。靜態獨享IP,不限流量,快速啟用。
IPV4 · united kingdom
英國獨享IPv4代理:面向跨境賣家、SEO與廣告行銷的靜態英國IP
英國獨享IPv4代理:專用於eBay英國與Amazon.co.uk調研、Google英國排名、廣告驗證及社群帳號營運。不限流量。