當需要透過 SOCKS5 代理進行 cURL 請求時,必須正確設定 CURLOPT_PROXYTYPE、CURLOPT_PROXY 及認證資訊。
$ch = curl_init();
// 設定代理類型為 SOCKS5
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
// 代理 IP 與埠
curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:1080");
// 代理認證(若無需認證可省略)
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "username:password");
// 其他常見設定
curl_setopt($ch, CURLOPT_URL, "https://httpbin.org/ip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo '錯誤:' . curl_error($ch);
} else {
echo $response;
}
curl_close($ch);
| 常數 | 說明 |
|---|---|
CURLPROXY_SOCKS5 | 使用 SOCKS5 協定(含遠端 DNS 解析) |
CURLPROXY_SOCKS5_HOSTNAME | SOCKS5 但由本地端解析 DNS |
CURLOPT_PROXY | 代理伺服器位址,格式 IP:PORT |
CURLOPT_PROXYUSERPWD | 代理認證帳密,格式 user:pwd |