186 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const net = require('net');
 | ||
| const http = require('http');
 | ||
| 
 | ||
| // 代理配置
 | ||
| const proxyConfig = {
 | ||
|   host: 'sg.arxlabs.io',
 | ||
|   port: 3010,
 | ||
|   username: 'hqb367407-region-HK-sid-FrUmXj5L-t-120',
 | ||
|   password: 'd37chqrl'
 | ||
| };
 | ||
| 
 | ||
| console.log('开始测试代理服务器连通性...');
 | ||
| console.log(`代理服务器: ${proxyConfig.host}:${proxyConfig.port}`);
 | ||
| console.log(`用户名: ${proxyConfig.username}`);
 | ||
| console.log('密码: ***');
 | ||
| 
 | ||
| // 测试1: TCP连接测试
 | ||
| function testTcpConnection() {
 | ||
|   return new Promise((resolve, reject) => {
 | ||
|     console.log('\n=== 测试1: TCP连接测试 ===');
 | ||
|     
 | ||
|     const socket = net.createConnection({
 | ||
|       host: proxyConfig.host,
 | ||
|       port: proxyConfig.port,
 | ||
|       timeout: 10000
 | ||
|     });
 | ||
|     
 | ||
|     socket.on('connect', () => {
 | ||
|       console.log('✅ TCP连接成功');
 | ||
|       socket.destroy();
 | ||
|       resolve(true);
 | ||
|     });
 | ||
|     
 | ||
|     socket.on('error', (err) => {
 | ||
|       console.log('❌ TCP连接失败:', err.message);
 | ||
|       socket.destroy();
 | ||
|       reject(err);
 | ||
|     });
 | ||
|     
 | ||
|     socket.on('timeout', () => {
 | ||
|       console.log('❌ TCP连接超时');
 | ||
|       socket.destroy();
 | ||
|       reject(new Error('TCP connection timeout'));
 | ||
|     });
 | ||
|   });
 | ||
| }
 | ||
| 
 | ||
| // 测试2: HTTP代理测试
 | ||
| function testHttpProxy() {
 | ||
|   return new Promise((resolve, reject) => {
 | ||
|     console.log('\n=== 测试2: HTTP代理测试 ===');
 | ||
|     
 | ||
|     const options = {
 | ||
|       hostname: proxyConfig.host,
 | ||
|       port: proxyConfig.port,
 | ||
|       path: 'http://httpbin.org/ip',
 | ||
|       method: 'GET',
 | ||
|       headers: {
 | ||
|         'Proxy-Authorization': 'Basic ' + Buffer.from(`${proxyConfig.username}:${proxyConfig.password}`).toString('base64'),
 | ||
|         'Host': 'httpbin.org'
 | ||
|       },
 | ||
|       timeout: 10000
 | ||
|     };
 | ||
|     
 | ||
|     const req = http.request(options, (res) => {
 | ||
|       console.log(`✅ HTTP代理响应状态: ${res.statusCode}`);
 | ||
|       
 | ||
|       let data = '';
 | ||
|       res.on('data', (chunk) => {
 | ||
|         data += chunk;
 | ||
|       });
 | ||
|       
 | ||
|       res.on('end', () => {
 | ||
|         console.log('✅ HTTP代理响应数据:', data);
 | ||
|         resolve(data);
 | ||
|       });
 | ||
|     });
 | ||
|     
 | ||
|     req.on('error', (err) => {
 | ||
|       console.log('❌ HTTP代理请求失败:', err.message);
 | ||
|       reject(err);
 | ||
|     });
 | ||
|     
 | ||
|     req.on('timeout', () => {
 | ||
|       console.log('❌ HTTP代理请求超时');
 | ||
|       req.destroy();
 | ||
|       reject(new Error('HTTP proxy timeout'));
 | ||
|     });
 | ||
|     
 | ||
|     req.end();
 | ||
|   });
 | ||
| }
 | ||
| 
 | ||
| // 测试3: SOCKS5代理测试
 | ||
| function testSocks5Proxy() {
 | ||
|   return new Promise((resolve, reject) => {
 | ||
|     console.log('\n=== 测试3: SOCKS5代理测试 ===');
 | ||
| 
 | ||
|     // 简单的SOCKS5握手测试
 | ||
|     const socket = net.createConnection({
 | ||
|       host: proxyConfig.host,
 | ||
|       port: proxyConfig.port,
 | ||
|       timeout: 10000
 | ||
|     });
 | ||
| 
 | ||
|     socket.on('connect', () => {
 | ||
|       console.log('TCP连接建立,尝试SOCKS5握手...');
 | ||
| 
 | ||
|       // SOCKS5握手:版本5,1种认证方法,用户名密码认证
 | ||
|       const handshake = Buffer.from([0x05, 0x01, 0x02]);
 | ||
|       socket.write(handshake);
 | ||
|     });
 | ||
| 
 | ||
|     socket.on('data', (data) => {
 | ||
|       if (data.length >= 2) {
 | ||
|         if (data[0] === 0x05 && data[1] === 0x02) {
 | ||
|           console.log('✅ SOCKS5服务器支持用户名密码认证');
 | ||
|           socket.destroy();
 | ||
|           resolve(true);
 | ||
|         } else if (data[0] === 0x05 && data[1] === 0x00) {
 | ||
|           console.log('✅ SOCKS5服务器不需要认证');
 | ||
|           socket.destroy();
 | ||
|           resolve(true);
 | ||
|         } else if (data[0] === 0x05 && data[1] === 0xFF) {
 | ||
|           console.log('❌ SOCKS5服务器不支持任何认证方法');
 | ||
|           socket.destroy();
 | ||
|           reject(new Error('SOCKS5 no acceptable methods'));
 | ||
|         } else {
 | ||
|           console.log('❌ SOCKS5握手失败,响应:', data.toString('hex'));
 | ||
|           socket.destroy();
 | ||
|           reject(new Error('SOCKS5 handshake failed'));
 | ||
|         }
 | ||
|       }
 | ||
|     });
 | ||
| 
 | ||
|     socket.on('error', (err) => {
 | ||
|       console.log('❌ SOCKS5代理测试失败:', err.message);
 | ||
|       socket.destroy();
 | ||
|       reject(err);
 | ||
|     });
 | ||
| 
 | ||
|     socket.on('timeout', () => {
 | ||
|       console.log('❌ SOCKS5代理测试超时');
 | ||
|       socket.destroy();
 | ||
|       reject(new Error('SOCKS5 proxy timeout'));
 | ||
|     });
 | ||
|   });
 | ||
| }
 | ||
| 
 | ||
| // 运行所有测试
 | ||
| async function runAllTests() {
 | ||
|   try {
 | ||
|     // 测试TCP连接
 | ||
|     await testTcpConnection();
 | ||
| 
 | ||
|     // 测试HTTP代理
 | ||
|     try {
 | ||
|       await testHttpProxy();
 | ||
|     } catch (err) {
 | ||
|       console.log('HTTP代理测试失败,可能不是HTTP代理或认证失败');
 | ||
|     }
 | ||
| 
 | ||
|     // 测试SOCKS5代理
 | ||
|     try {
 | ||
|       await testSocks5Proxy();
 | ||
|     } catch (err) {
 | ||
|       console.log('SOCKS5代理测试失败,该代理服务器不支持SOCKS5协议');
 | ||
|     }
 | ||
| 
 | ||
|   } catch (err) {
 | ||
|     console.log('\n=== 总结 ===');
 | ||
|     console.log('❌ 代理服务器连接失败');
 | ||
|     console.log('可能的原因:');
 | ||
|     console.log('1. 代理服务器已下线');
 | ||
|     console.log('2. IP地址或端口错误');
 | ||
|     console.log('3. 网络防火墙阻止连接');
 | ||
|     console.log('4. 代理服务器配置问题');
 | ||
|     process.exit(1);
 | ||
|   }
 | ||
| 
 | ||
|   console.log('\n=== 总结 ===');
 | ||
|   console.log('✅ 代理服务器基本连接正常');
 | ||
| }
 | ||
| 
 | ||
| runAllTests();
 | 
