在线使用:[代理检测 (skyw.cc)](https://blog.skyw.cc/tools/check_proxy.php)  ```php 代理检测 代理检测工具 粘贴代理字符串 一键导入 IP地址 端口 用户名 密码 协议类型 HTTP SOCKS4 SOCKS5 检测代理 ``` Loading... 在线使用:[代理检测 (skyw.cc)](https://blog.skyw.cc/tools/check_proxy.php)  ```php <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $ip = $_POST['ip']; $port = $_POST['port']; $username = $_POST['username'] ?? null; $password = $_POST['password'] ?? null; $protocol = $_POST['protocol']; $proxy = "$ip:$port"; $proxyAuth = $username ? "$username:$password" : null; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://4.ipw.cn"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时时间为10秒 // 根据协议类型设置代理类型 if ($protocol === 'socks5') { curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); } elseif ($protocol === 'socks4') { curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); } if ($proxyAuth) { curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyAuth); } $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curlError = curl_error($ch); // 获取curl错误信息 if ($httpCode == 200) { echo "代理检测成功,当前IP: " . $response; } else { echo "代理检测失败,错误代码: " . $httpCode . ",错误信息: " . $curlError; } curl_close($ch); return; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>代理检测</title> <link href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/bootstrap/5.1.3/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container mt-5"> <h1 class="mb-4">代理检测工具</h1> <div class="mb-3"> <label for="proxyString" class="form-label">粘贴代理字符串</label> <input type="text" class="form-control" id="proxyString" placeholder=""> </div> <button id="importProxy" class="btn btn-secondary mb-3">一键导入</button> <form id="proxyForm"> <div class="mb-3"> <label for="ip" class="form-label">IP地址</label> <input type="text" class="form-control" id="ip" name="ip" required> </div> <div class="mb-3"> <label for="port" class="form-label">端口</label> <input type="number" class="form-control" id="port" name="port" required> </div> <div class="mb-3"> <label for="username" class="form-label">用户名</label> <input type="text" class="form-control" id="username" name="username"> </div> <div class="mb-3"> <label for="password" class="form-label">密码</label> <input type="text" class="form-control" id="password" name="password"> </div> <div class="mb-3"> <label for="protocol" class="form-label">协议类型</label> <select class="form-select" id="protocol" name="protocol" required> <option value="http">HTTP</option> <option value="socks4">SOCKS4</option> <option value="socks5">SOCKS5</option> </select> </div> <button type="submit" class="btn btn-primary">检测代理</button> </form> <div id="result" class="mt-4"></div> </div> <script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js"></script> <script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/layer/3.5.1/layer.min.js"></script> <script> $(document).ready(function() { $('#proxyForm').on('submit', function(e) { e.preventDefault(); layer.load(2); // 显示加载动画 $.ajax({ url: 'check_proxy.php', type: 'POST', data: $(this).serialize(), success: function(response) { layer.closeAll('loading'); // 关闭加载动画 layer.msg(response, {icon: 1}); // 显示成功消息 $('#result').html('<div class="alert alert-info">' + response + '</div>'); }, error: function() { layer.closeAll('loading'); // 关闭加载动画 layer.msg('检测失败,请重试。', {icon: 2}); // 显示错误消息 $('#result').html('<div class="alert alert-danger">检测失败,请重试。</div>'); } }); }); $('#importProxy').on('click', function() { const proxyString = $('#proxyString').val(); const regexWithAuth = /^(http|socks4|socks5):\/\/([^:]+):([^@]+)@([^:]+):(\d+)$/; const regexWithoutAuth = /^(http|socks4|socks5):\/\/([^:]+):(\d+)$/; let match = proxyString.match(regexWithAuth); if (!match) { match = proxyString.match(regexWithoutAuth); } if (match) { const protocol = match[1]; const ip = match[match.length - 2]; const port = match[match.length - 1]; let username = ''; let password = ''; $('#protocol').val(protocol); $('#ip').val(ip); $('#port').val(port); if (match.length == 6) { username = match[2]; password = match[3]; $('#username').val(username); $('#password').val(password); } } else { alert('代理字符串格式不正确,请检查。'); } }); }); </script> </body> </html> ``` Last modification:October 28, 2024 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏