要在 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 扩展。