如何解決 407 Proxy Authentication Required 錯誤

更新於:

出現 407 其實比表面上看起來樂觀:您的裝置已成功連線至 Proxy,網路路徑也是通暢的。Proxy 只是表示它並未收到有效的使用者名稱與密碼。因此,幾乎所有的 407 錯誤都是帳密驗證的問題,而非路由器或防火牆故障。

帳密清晰明確的專屬代理伺服器

407 錯誤的常見原因(依可能性排序)

  • 使用者名稱或密碼錯誤/遺漏。 輸入錯誤一個字元,或是複製密碼時不小心夾帶了結尾空格。大部分的 407 錯誤皆由此引起。
  • 欄位貼錯位置。 把整串 ip:port:user:pass 都貼進主機(Host)欄位,或是把使用者名稱貼到密碼欄。某些工具會自動為您分割這四個欄位,但有些不會。
  • 應用程式從未發送驗證資訊。 作業系統層級的 Proxy 設定通常只儲存位址與連接埠。無法彈出密碼提示視窗的應用程式會在缺少驗證標頭的情況下連線,進而收到 407 回應。
  • Proxy URL 中含有特殊字元。 在 http://user:pass@host:port 格式中,密碼若包含 @、: 或 # 等字元,必須進行百分比編碼(例如 @ 轉為 %40),否則字串會在錯誤的位置被截斷。

407 錯誤的實際樣貌

我們在測試 Proxy 上重現了此錯誤,這裡使用文件範例位址 203.0.113.10:8080 與刻意設錯的 user123:pass456。針對 HTTPS 網站執行 curl -x http://user123:[email protected]:8080 https://example.com 會印出 curl: (56) CONNECT tunnel failed, response 407。若搭配 -w %{http_code} 針對一般 HTTP 網站執行,curl 則只會印出 407。

加上 -v 即可查看是否有送出驗證資訊。追蹤紀錄會先顯示 > CONNECT example.com:443 HTTP/1.1,接著是 > Proxy-Authorization: Basic ...,最後才是 407。若缺少 Proxy-Authorization 這一行,代表您的客戶端從未發送登入資訊。

VinaProxy 的 Proxy 檢查工具 會將相同狀況回報為 auth failed (407)。而沒有登入對話框的無頭 Chrome 則會顯示為 ERR_TUNNEL_CONNECTION_FAILED;詳情請參閱 通道錯誤頁面。

各環境的解決方法

  • Windows 與 Chrome: Chrome 遵循 Windows 的 Proxy 設定(設定 > 網路和網際網路 > Proxy),該處僅能儲存位址與連接埠。首次載入網頁時,Chrome 會彈出登入對話框以供輸入 Proxy 的使用者名稱與密碼。如果輸入錯誤且對話框未再次出現,請關閉所有 Chrome 視窗後重新開啟。
  • 防關聯瀏覽器(AdsPower、GoLogin、GenLogin): 將主機(Host)、連接埠(Port)、使用者名稱(Username)和密碼(Password)填入各自獨立的欄位。請將密碼欄位完全清空後重新貼上,切勿直接修改。各欄位的詳細說明請參閱 GoLogin 設定指南。
  • 手機: iPhone 在「設定」>「Wi-Fi」>「(i)」>「設定代理伺服器」中有一個「認證」開關;若未開啟便會產生 407。Android 通常僅接受主機與連接埠,因此需要登入驗證的應用程式可能會改為顯示一般的連線錯誤。
  • curl: 改用獨立的 -U "user:pass" 參數傳遞,不要直接寫在 URL 中,這樣即可避開特殊字元引發的問題。
  • Python requests: 在 proxies 字典的 http 與 https 鍵中皆設定 http://user:pass@host:port,若密碼含有特殊字元,請使用 urllib.parse.quote 進行編碼。

驗證資訊正確卻依然出現 407

接下來請比對通訊協定。VinaProxy 販售支援帳號密碼登入的 HTTP(S) Proxy 以及 SOCKS5 Proxy,請務必選擇控制台訂單中顯示的協定。如果檢查工具回應 not socks5,代表該連接埠使用的是 HTTP,不應設定為 SOCKS5。

操作步驟

  1. 1

    從控制台複製 Proxy 資訊

    在您的 VinaProxy 控制台中開啟該筆訂單,直接複製完整資訊,避免手動輸入。

  2. 2

    使用 Proxy 檢查工具進行檢測

    將其貼入 Proxy 檢查工具。若結果顯示 auth failed (407),即確認是驗證資訊有誤,而非網路連線問題。

  3. 3

    重新乾淨輸入使用者名稱與密碼

    將軟體中的這兩個欄位完全清空,然後重新貼上,確保開頭與結尾沒有任何空格。

  4. 4

    確認通訊協定與訂單相符

    完全依照訂單指示將 Proxy 類型設定為 HTTP 或 SOCKS5,然後儲存。

  5. 5

    若問題持續,使用 curl -v 追蹤分析

    帶入您的真實數值執行 curl -v,並檢查在 407 出現之前是否有 Proxy-Authorization 這一行。

常見問題

407 錯誤是因為我的 ISP 封鎖了 Proxy 嗎?

不是。407 是由 Proxy 伺服器本身回傳的,表示連線已經順利抵達。如果網路路徑被封鎖,通常會顯示為逾時或連線被拒絕;詳情請參閱 Proxy 逾時說明。

為什麼 Chrome 一直重複要求輸入 Proxy 登入資訊?

每次輸入錯誤都會再次收到 407,Chrome 就會重新提示。請檢查 Caps Lock(大寫鎖定),並確認越南文或其他輸入法沒有在密碼中加入任何額外字元或符號。

如果密碼中含有 @,該如何放入 Proxy URL?

進行編碼即可:@ 編碼為 %40、: 編碼為 %3A、# 編碼為 %23。若使用 curl,改用 -U 參數則完全不需要進行編碼。

Selenium 或 Puppeteer 顯示通道錯誤而非 407,也是同一個問題嗎?

通常是的。無頭 Chrome 無法顯示登入對話框,因此 407 會呈現為 ERR_TUNNEL_CONNECTION_FAILED。請透過該套件庫的驗證機制提供帳密,詳情請參閱 Selenium 設定指南。

帳密清晰明確的專屬代理伺服器

每筆 VinaProxy 訂單皆提供立即可用的 ip:port:user:pass 完整資訊,一次複製即可隨處貼上使用。

查看 Proxy 方案價格

相關文章

代理錯誤
解決使用代理伺服器時出現的 ERR_TUNNEL_CONNECTION_FAILED 錯誤
ERR_TUNNEL_CONNECTION_FAILED 代表 Chrome 已連上代理伺服器,但未能建立 HTTPS 通道。本文介紹如何判讀 CONNECT 狀態碼,並在 Chrome、Puppeteer 與 Android 中解決此問題。
免費工具
Proxy 檢測工具:線上檢查你的代理
免費 Proxy 檢測工具:以 ip:port:user:pass 格式貼上最多 100 個代理,線上檢查狀態、出口 IP 與延遲,並了解各種錯誤的意思。
代理設定教學
Google Chrome 代理伺服器配置完整指南
透過 Chrome 擴充功能、--proxy-server 指令列參數或獨立使用者設定檔,在 Google Chrome 中配置 VinaProxy HTTP(S) 代理,無需變更全系統 IP。
代理設定教學
如何在 cURL 中使用 Proxy 代理(命令列語法與偵錯技巧)
在 Linux、macOS 與 Windows 上使用 curl 指令搭配驗證型 HTTP(S) 代理(-x http://user:pass@ip:port 與 -U 參數完全指南)。
代理設定教學
如何在Python Requests中使用代理(HTTP/HTTPS與Session連線池)
在Python requests與requests.Session()中配置帶認證的HTTP(S)代理。解決407 ProxyError例外並實現靜態IP池輪換。
代理設定教學
如何在 GoLogin 中設定代理(Orbita 瀏覽器)
在 GoLogin 中新增 HTTP ip:port:user:pass 代理的逐步教學。設定 Orbita WebRTC、時區同步與批次貼上代理。
代理設定教學
如何在 Windows 10 與 Windows 11 上設定代理
透過 WinINET 系統設定、PowerShell 環境變數或 netsh winhttp 在 Windows 10 與 Windows 11 上配置 VinaProxy HTTP(S) 代理伺服器。
代理設定教學
如何在 GenLogin 中設定代理(單一設定檔與批次匯入)
在 GenLogin 防關聯瀏覽器中設定 HTTP ip:port:user:pass 代理。同步時區與 WebRTC 設定,快速排除環境連線異常。