代理伺服器 502 Bad Gateway 錯誤:找出是誰傳回的
更新於:
502 Bad Gateway 表示中繼伺服器(可能是您的代理伺服器,也可能是目標網站的前端伺服器)轉發了請求,卻沒有收到有效的回覆。同樣的狀態碼,問題來源卻完全不同,因此在著手修復之前,請先確認究竟是誰傳回了 502。
代理伺服器傳回 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
留意 502 出現的位置
在 https 網址上顯示的 502 頁面代表問題在網站端;Chrome 出現通道錯誤則指向代理連線路徑。
- 2
關閉代理並重新載入
未開啟代理時依然出現 502,代表是網站本身發生故障。
- 3
透過同一個代理載入其他網站
如果其他網站可以正常運作,表示代理正常,只是原本的網站拒絕連線或已離線。
- 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 被封鎖的問題。
查看定價