温馨提示×

在PHP中如何检测SOCKS5代理状态

PHP
小樊
84
2024-08-29 12:00:18
栏目: 编程语言

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

0