代理伺服器 502 Bad Gateway 錯誤:找出是誰傳回的

更新於:

502 Bad Gateway 表示中繼伺服器(可能是您的代理伺服器,也可能是目標網站的前端伺服器)轉發了請求,卻沒有收到有效的回覆。同樣的狀態碼,問題來源卻完全不同,因此在著手修復之前,請先確認究竟是誰傳回了 502。

專用獨立 IP,不與陌生人共享

代理伺服器傳回 502 時的情況

我們讓測試代理傳回 502 並記錄了回應,此處以 203.0.113.10:8080 與 user123:pass456 改寫示範:

  • HTTPS 網站:curl -x http://user123:[email protected]:8080 https://example.com 會印出 curl: (56) CONNECT tunnel failed, response 502。
  • 一般 HTTP 網站:curl 會收到狀態碼 502。
  • 在 Chrome 中透過該代理載入 HTTPS 網頁時,會顯示 ERR_TUNNEL_CONNECTION_FAILED,完全不會出現 502 頁面。
  • proxy checker 會顯示 HTTP 502;其他代碼也會以 HTTP <code> 形式顯示。

關鍵判斷:HTTPS 網站上出現的 502 頁面

對於 HTTPS 網站,代理伺服器只負責建立通道,無法在加密連線中插入自己的頁面。如果代理拒絕連線,Chrome 會回報 ERR_TUNNEL_CONNECTION_FAILED。因此,當您在 https:// 網址上看到完整的「502 Bad Gateway」網頁時,幾乎可以確定它來自目標網站的伺服器,而不是代理伺服器。

若要確認,可以關閉代理並重新載入相同網頁。如果依然出現 502,就表示是該網站本身發生問題,您只能等待修復或聯絡網站管理員。

確實是由代理伺服器傳回 502 的情況

  • 目標網站未回應代理伺服器。 網站可能已離線、過載,或拒絕來自該代理 IP 範圍的連線。
  • 網域名稱輸入錯誤或無法解析。 代理伺服器找不到該網站的位址,因此無法轉發請求。
  • 目標連接埠未開放。 請求所指定的連接埠並未提供服務。
  • 代理伺服器端發生暫時性故障。 這種情況較少見;當透過某個代理存取所有網站都傳回 502,但換另一個代理卻能正常運作時,即可發現此問題。

各環境下的應對方式

  • Chrome 或防關聯瀏覽器環境(antidetect profiles): 在同一個環境中開啟另一個大型網站。如果能夠載入,表示代理正常,問題出在原本的網站。
  • 手機: 關閉 Wi-Fi 代理並改用行動網路存取該網頁,確認該網站是否對所有人都無法連線。
  • curl: 加入 -v 查看緊接在 CONNECT 之後傳回的 502,然後換一個不同的網域重複測試以縮小問題範圍。
  • Python requests: 針對 HTTP 網頁,檢查 response.status_code == 502 並稍候重試;針對 HTTPS 網頁,通道建立失敗會拋出 requests.exceptions.ProxyError。重試時應設定間隔時間,避免持續頻繁請求。

操作步驟

  1. 1

    留意 502 出現的位置

    在 https 網址上顯示的 502 頁面代表問題在網站端;Chrome 出現通道錯誤則指向代理連線路徑。

  2. 2

    關閉代理並重新載入

    未開啟代理時依然出現 502,代表是網站本身發生故障。

  3. 3

    透過同一個代理載入其他網站

    如果其他網站可以正常運作,表示代理正常,只是原本的網站拒絕連線或已離線。

  4. 4

    使用檢測工具測試代理

    將代理資訊貼入 proxy checker。如果每個網站都傳回 HTTP 502,請附上檢測結果提交工單。

常見問題

出現 502 代表我的代理已經過期了嗎?

通常不是。過期或已停止服務的代理通常會導致連線失敗或逾時;請參閱 proxy timeout。

為什麼透過代理只有特定一個網站傳回 502?

該網站可能故障,或拒絕回應來自該代理 IP 的連線。您可以稍後再試,或改用其他國家/地區的 IP。

502 與 504 有什麼差別?

502 代表收到無效回應或無法取得回應;504 則代表中繼伺服器等待回應逾時。檢測工具會將兩者皆顯示為 HTTP <code>。

我的爬蟲偶爾會遇到 502,我應該更換代理嗎?

零星出現的 502 通常代表目標網站過載。在更換代理之前,建議先降低請求頻率並拉長重試間隔;請參閱 proxies for web scraping。

專用獨立 IP,不與陌生人共享

VinaProxy 專用代理能協助您避免因他人使用而導致 IP 被封鎖的問題。

查看定價

相關文章

代理錯誤
解決使用代理伺服器時出現的 ERR_TUNNEL_CONNECTION_FAILED 錯誤
ERR_TUNNEL_CONNECTION_FAILED 代表 Chrome 已連上代理伺服器,但未能建立 HTTPS 通道。本文介紹如何判讀 CONNECT 狀態碼,並在 Chrome、Puppeteer 與 Android 中解決此問題。
代理錯誤
Proxy 逾時錯誤:連線卡住並最終放棄
Proxy 逾時代表在等待限制時間內未收到任何回應。教你分辨 curl (28) 與 ERR_TIMED_OUT、調整 Python 逾時設定,並找出流量在哪個環節被阻擋。
免費工具
Proxy 檢測工具:線上檢查你的代理
免費 Proxy 檢測工具:以 ip:port:user:pass 格式貼上最多 100 個代理,線上檢查狀態、出口 IP 與延遲,並了解各種錯誤的意思。
代理設定教學
如何在 cURL 中使用 Proxy 代理(命令列語法與偵錯技巧)
在 Linux、macOS 與 Windows 上使用 curl 指令搭配驗證型 HTTP(S) 代理(-x http://user:pass@ip:port 與 -U 參數完全指南)。
依平台選擇代理
網路爬蟲專用代理:為 24/7 爬蟲打造的不限流量獨享 IPv4 與 ISP 代理池
為 Python、Playwright、Selenium 與 Scrapy 提供高速 HTTP(S) 獨享 IPv4 與靜態 ISP Proxy,享無限月度流量。
代理設定教學
Google Chrome 代理伺服器配置完整指南
透過 Chrome 擴充功能、--proxy-server 指令列參數或獨立使用者設定檔,在 Google Chrome 中配置 VinaProxy HTTP(S) 代理,無需變更全系統 IP。
代理設定教學
如何在 Windows 10 與 Windows 11 上設定代理
透過 WinINET 系統設定、PowerShell 環境變數或 netsh winhttp 在 Windows 10 與 Windows 11 上配置 VinaProxy HTTP(S) 代理伺服器。
代理設定教學
如何在 GenLogin 中設定代理(單一設定檔與批次匯入)
在 GenLogin 防關聯瀏覽器中設定 HTTP ip:port:user:pass 代理。同步時區與 WebRTC 設定,快速排除環境連線異常。