const axios = require('axios'); const { HttpsProxyAgent } = require('https-proxy-agent'); const { SocksProxyAgent } = require('socks-proxy-agent'); // 测试配置 const testConfig = { // 替换为你的实际代理配置 ss: { name: 'SS-Node-1', type: 'ss', server: '1.2.3.4', port: 8388, password: 'your_password', cipher: 'aes-256-gcm' }, vmess: { name: 'VMess-Node-1', type: 'vmess', server: '9.10.11.12', port: 443, uuid: 'your-uuid-here' }, trojan: { name: 'Trojan-Node-1', type: 'trojan', server: '17.18.19.20', port: 443, password: 'your_password' } }; /** * 创建代理Agent */ function createProxyAgent(node) { try { console.log(`创建代理Agent: ${node.name} - ${node.type}`); switch (node.type) { case 'ss': case 'ssr': case 'vmess': case 'trojan': // 尝试使用HTTP代理模式 console.log(`尝试HTTP代理模式: ${node.type} - ${node.name}`); // 构建代理URL let proxyUrl = `http://${node.server}:${node.port}`; // 如果有认证信息,添加到URL中 if (node.username && node.password) { proxyUrl = `http://${node.username}:${node.password}@${node.server}:${node.port}`; } const agent = new HttpsProxyAgent(proxyUrl); console.log(`高级代理创建成功: ${node.name} - ${proxyUrl}`); return agent; default: console.log(`不支持的代理类型: ${node.type} - ${node.name}`); return null; } } catch (error) { console.error(`创建代理Agent失败: ${node.name}`, { error: error.message, type: node.type }); return null; } } /** * 测试代理连接 */ async function testProxy(node) { console.log(`\n=== 测试代理: ${node.name} ===`); try { const agent = createProxyAgent(node); if (!agent) { console.log(`❌ 无法创建代理Agent: ${node.name}`); return false; } console.log(`🔗 开始测试连接...`); const startTime = Date.now(); const response = await axios({ method: 'GET', url: 'https://httpbin.org/ip', httpsAgent: agent, httpAgent: agent, timeout: 10000, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } }); const latency = Date.now() - startTime; console.log(`✅ 连接成功!`); console.log(`📊 延迟: ${latency}ms`); console.log(`🌐 IP地址: ${response.data.origin}`); console.log(`📄 响应状态: ${response.status}`); return true; } catch (error) { console.log(`❌ 连接失败: ${error.message}`); if (error.code === 'ECONNREFUSED') { console.log(`💡 提示: 连接被拒绝,可能是代理服务器未运行或端口错误`); } else if (error.code === 'ETIMEDOUT') { console.log(`💡 提示: 连接超时,可能是网络问题或代理配置错误`); } else if (error.code === 'ENOTFOUND') { console.log(`💡 提示: 无法解析主机名,请检查服务器地址`); } return false; } } /** * 主测试函数 */ async function main() { console.log('🚀 开始测试高级代理类型...\n'); // 测试直接连接 console.log('=== 测试直接连接 ==='); try { const directResponse = await axios.get('https://httpbin.org/ip', { timeout: 5000 }); console.log(`✅ 直接连接正常 - IP: ${directResponse.data.origin}`); } catch (error) { console.log(`❌ 直接连接失败: ${error.message}`); } // 测试各种代理类型 const testNodes = [ testConfig.ss, testConfig.vmess, testConfig.trojan ]; for (const node of testNodes) { await testProxy(node); } console.log('\n🎯 测试完成!'); console.log('\n💡 提示:'); console.log('1. 如果所有代理都失败,请检查代理服务器是否正常运行'); console.log('2. 确保代理配置信息正确(服务器地址、端口、密码等)'); console.log('3. 某些代理类型可能需要特殊的客户端库支持'); console.log('4. 可以尝试使用Clash等代理客户端来验证代理是否可用'); } // 运行测试 main().catch(console.error);