Socks5Proxy

cURL代理使用教學,在命令行中確認HTTP與SOCKS5代理

本指南提供cURL連接Socks5Proxy的HTTP/SOCKS5代理指令、帳密認證參數、響應時間測量,以及批次測試IP清單的Shell腳本實作。

為何使用cURL測試代理係好選擇?

cURL幾乎安裝於所有伺服器及開發環境,係最快確認代理是否正常運作嘅工具。當代碼或瀏覽器設定出現問題時,用cURL測試相同配置可立即分辨係代理問題定代碼問題。

示例使用 IP 198.51.100.23,HTTP 端口 8000,SOCKS5 端口 1080,用戶名 spx_user,密碼 spx_pass。

如何連接 HTTP 代理?

在 -x(或 --proxy)选项中填入代理地址。用户名和密码可以包含在地址中,或使用 -U 选项单独提供。请求 HTTPS 地址时,cURL 会使用 CONNECT 方法建立隧道,并在其中进行加密请求。

# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org

# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.org

如何連接 SOCKS5 代理?

--socks5-hostname 会在代理端进行域名解析。这样,服务器的 DNS 请求不会暴露在外,域名会根据代理所在的国家进行解析。--socks5 则会在服务器端进行名称解析,然后将 IP 发送到代理。大多数情况下,推荐使用 --socks5-hostname。

使用socks5h://格式作為-x參數可獲相同結果。

# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org

# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.org

如何同時監控響應時間與狀態?

使用 -w 选项可以输出连接时间、第一个字节到达时间、总时间和响应代码。这对于比较不同国家代理的速度,或区分是目标网站慢还是代理慢非常有用。

使用 -o /dev/null 丢弃正文,并用 -s 关闭进度显示,可以清晰地查看结果。

curl -s -o /dev/null \
  -x http://spx_user:spx_pass@198.51.100.23:8000 \
  -w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

如何一次性檢查整個清單?

通過API獲取列表並逐行執行cURL可一次性檢查所有代理狀態。以下腳本獲取ip:port:user:pass格式列表,輸出每行響應IP及耗時。設置超時防止無響應行卡住。

#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
  "https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt

while IFS=: read -r ip port user pass; do
  out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
  echo "$ip:$port $out"
done < proxies.txt

API是否可用cURL調用?

是的,餘額查詢、有效計劃列表、代理列表均可通過Authorization: Bearer單一標頭調用。JSON響應可用jq等工具篩選特定字段。

curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"

也可以通過環境變量設置代理嗎?

是的,cURL等命令行工具會讀取http_proxy、https_proxy、all_proxy環境變量。在shell中設置後,該環境下運行的cURL、wget、pip等工具都會使用相同代理。SOCKS5需將socks5h://地址設為all_proxy。

無需代理的地址請在no_proxy中以逗號分隔列出,可避免內部伺服器或localhost請求誤經代理傳出。

export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org

# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"

如何比較 HTTP 代理和 SOCKS5 代理的結果?

使用相同IP的兩個端口向同一地址發送請求,比較響應IP和時間,可以了解在您的環境中哪種方式更快。大多數情況下相似,但如果目標服務器較遠或DNS解析較慢,可能會有所不同。

兩種方式的響應IP應相同。若不一致,可能混用不同IP的端口,請重新檢查清單。

for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
  curl -s -m 15 -x "$p" -w "  %{time_total}s\n" https://api.ipify.org
done

伺服器如何檢查 IP 授權的 IP?

IP 授權需註冊伺服器對外連線的公共 IPv4。執行 curl -4 https://api.ipify.org 即可查詢,將此值註冊至儀表板後,該伺服器可免密碼連接。

curl -4 -s https://api.ipify.org

HTTPS 網站上代理可以查看內容嗎?

使用 HTTP 代理請求 HTTPS 地址時,cURL 首先使用 CONNECT 建立到目標服務器的隧道,然後在隧道內與目標服務器直接建立加密連接。代理只知道連接的服務器,無法查看加密的內容。使用 -v 選項運行時,可以逐步顯示 CONNECT 階段和後續的加密連接過程。

SOCKS5同理。代理僅轉發連接,加密在cURL與目標伺服器間進行。因此建議不要使用證書跳過選項(-k)以確保安全,因為通過代理後仍會驗證目標伺服器的證書。

使用 --socks5-hostname 时,访问的域名也会由代理解析,因此服务器的 DNS 请求记录中不会留下痕迹。

curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"

如何解讀cURL錯誤訊息?

從代理收到 HTTP 代碼 407 表示認證失敗。請檢查用戶名和密碼,或註冊的伺服器 IP。如果密碼中包含 @ 或 :,請不要將其放入地址中,而是使用 -U 或 --proxy-user 來輸入。

Failed to connect 或 Connection timed out 通常是由於端口不匹配或服務器防火牆阻止了出站連接。請確保 HTTP 地址使用 HTTP 端口,SOCKS5 使用 SOCKS5 端口,並檢查出站端口是否打開。使用 -v 選項可以逐步顯示連接過程,更容易找到原因。

cURL代理使用教學,-x與SOCKS5連接確認 | Socks5Proxy