要在 PHP 中檢測(cè) SOCKS5 代理的狀態(tài),可以使用 cURL 庫(kù)
<?php
function check_socks5_proxy($proxy_host, $proxy_port) {
$url = "http://www.example.com"; // 用于測(cè)試代理的目標(biāo) URL
$ch = curl_init($url);
// 設(shè)置 cURL 選項(xiàng)
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);
// 發(fā)送請(qǐng)求并獲取響應(yīng)
$response = curl_exec($ch);
// 檢查是否有錯(cuò)誤
if (curl_errno($ch)) {
echo "Error: " . curl_error($ch);
return false;
}
// 關(guān)閉 cURL 會(huì)話
curl_close($ch);
// 檢查響應(yīng)是否包含目標(biāo) URL 的內(nèi)容(表示代理有效)
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.";
}
?>
這個(gè)函數(shù)首先初始化一個(gè) cURL 會(huì)話,然后設(shè)置代理服務(wù)器的相關(guān)選項(xiàng)。接著,它發(fā)送一個(gè) HTTP 請(qǐng)求并等待響應(yīng)。如果響應(yīng)中包含目標(biāo) URL 的內(nèi)容,那么說(shuō)明代理有效。如果有任何錯(cuò)誤或響應(yīng)不符合預(yù)期,則認(rèn)為代理無(wú)效。
請(qǐng)注意,這個(gè)示例需要安裝并啟用 PHP 的 cURL 擴(kuò)展。