要在 PHP 中檢測 SOCKS5 代理的狀態,可以使用 cURL 庫
<?php
function check_socks5_proxy($proxy_host, $proxy_port) {
$url = "http://www.example.com"; // 用于測試代理的目標 URL
$ch = curl_init($url);
// 設置 cURL 選項
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy_host . ':' . $proxy_port);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// 發送請求并獲取響應
$response = curl_exec($ch);
// 檢查是否有錯誤
if (curl_errno($ch)) {
echo "Error: " . curl_error($ch);
return false;
}
// 關閉 cURL 會話
curl_close($ch);
// 檢查響應是否包含目標 URL 的內容(表示代理有效)
if (strpos($response, "Example Domain") !== false) {
return true;
} else {
return false;
}
}
// 使用示例
$proxy_host = "127.0.0.1";
$proxy_port = 1080;
if (check_socks5_proxy($proxy_host, $proxy_port)) {
echo "SOCKS5 proxy is working.";
} else {
echo "SOCKS5 proxy is not working.";
}
?>
這個函數首先初始化一個 cURL 會話,然后設置代理服務器的相關選項。接著,它發送一個 HTTP 請求并等待響應。如果響應中包含目標 URL 的內容,那么說明代理有效。如果有任何錯誤或響應不符合預期,則認為代理無效。
請注意,這個示例需要安裝并啟用 PHP 的 cURL 擴展。