123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- const SpeedTester = require('./src/core/speedTester');
- const logger = require('./src/utils/logger');
- // 测试节点配置 - 使用Clash混合端口7897
- const testNodes = [
- // 测试直连(不使用代理)
- {
- id: 1,
- name: '直连测试',
- type: 'direct',
- server: '',
- port: 0,
- username: '',
- password: ''
- },
- // Clash混合端口HTTP代理
- {
- id: 2,
- name: '测试HTTP代理',
- type: 'http',
- server: '127.0.0.1',
- port: 7897,
- username: '',
- password: ''
- },
- // Clash混合端口SOCKS5代理
- {
- id: 3,
- name: '测试SOCKS5代理',
- type: 'socks5',
- server: '127.0.0.1',
- port: 7897,
- username: '',
- password: ''
- }
- ];
- // 添加一个简单的直连测试函数
- async function testDirectConnection() {
- console.log('🌐 测试直连连通性...');
-
- const axios = require('axios');
- const testUrls = [
- 'https://www.google.com',
- 'https://httpbin.org/get',
- 'https://www.github.com'
- ];
-
- for (const url of testUrls) {
- try {
- console.log(`尝试连接: ${url}`);
- const startTime = Date.now();
- const response = await axios.get(url, {
- timeout: 10000,
- headers: {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
- }
- });
- const latency = Date.now() - startTime;
-
- console.log(`✅ 直连成功: ${url} (${latency}ms)`);
- console.log(`状态码: ${response.status}`);
- console.log(`IP: ${response.headers['x-forwarded-for'] || 'unknown'}`);
- return true;
- } catch (error) {
- console.log(`❌ 直连失败: ${url} - ${error.message}`);
- }
- }
-
- console.log('❌ 所有直连测试都失败了,请检查网络连接');
- return false;
- }
- async function testConnectivity() {
- console.log('🚀 开始连通性测试...\n');
-
- // 首先测试直连
- const directSuccess = await testDirectConnection();
- console.log('');
-
- if (!directSuccess) {
- console.log('⚠️ 直连测试失败,代理测试可能也会失败');
- console.log('请检查网络连接或防火墙设置\n');
- }
-
- const speedTester = new SpeedTester();
-
- try {
- // 测试单个节点
- console.log('📡 测试代理节点...');
- const singleResult = await speedTester.testNode(testNodes[1]); // 测试HTTP代理
- console.log('单个节点测试结果:', JSON.stringify(singleResult, null, 2));
- console.log('');
-
- // 批量测试节点
- console.log('📡 批量测试节点...');
- const batchResults = await speedTester.testNodes(testNodes.slice(1)); // 跳过直连测试
-
- console.log('\n📊 测试结果汇总:');
- console.log('='.repeat(50));
-
- batchResults.forEach((result, index) => {
- const node = testNodes[index + 1]; // +1 因为跳过了直连测试
- const status = result.isSuccess ? '✅ 连通' : '❌ 不通';
- const latency = result.latency ? `${result.latency}ms` : 'N/A';
- const ip = result.ipAddress || 'N/A';
-
- console.log(`${status} ${node.name} (${node.type})`);
- console.log(` 延迟: ${latency}`);
- console.log(` IP: ${ip}`);
- console.log(` 测试URL: ${result.testUrl || 'N/A'}`);
- if (result.errorMessage) {
- console.log(` 错误: ${result.errorMessage}`);
- }
- console.log('');
- });
-
- const successCount = batchResults.filter(r => r.isSuccess).length;
- console.log(`总计: ${successCount}/${batchResults.length} 个节点连通`);
-
- // 提供故障排除建议
- if (successCount === 0) {
- console.log('\n🔧 故障排除建议:');
- console.log('1. 检查代理服务是否正在运行');
- console.log('2. 确认代理端口是否正确');
- console.log('3. 检查防火墙设置');
- console.log('4. 尝试使用其他代理服务器');
- console.log('5. 检查代理配置是否正确');
- }
-
- } catch (error) {
- console.error('❌ 测试过程中发生错误:', error.message);
- }
- }
- // 添加一个简单的代理检测函数
- async function detectLocalProxies() {
- console.log('🔍 检测本地代理服务...');
-
- const net = require('net');
- const commonPorts = [7897, 7891, 8118, 3128, 8388, 10808];
-
- for (const port of commonPorts) {
- try {
- const socket = new net.Socket();
- const result = await new Promise((resolve) => {
- socket.setTimeout(2000);
- socket.on('connect', () => {
- socket.destroy();
- resolve(true);
- });
- socket.on('timeout', () => {
- socket.destroy();
- resolve(false);
- });
- socket.on('error', () => {
- socket.destroy();
- resolve(false);
- });
- socket.connect(port, '127.0.0.1');
- });
-
- if (result) {
- console.log(`✅ 发现本地代理服务: 127.0.0.1:${port}`);
- }
- } catch (error) {
- // 忽略错误
- }
- }
-
- console.log('检测完成\n');
- }
- // 如果直接运行此脚本
- if (require.main === module) {
- // 先检测本地代理
- detectLocalProxies().then(() => {
- return testConnectivity();
- }).catch(console.error);
- }
- module.exports = { testConnectivity, testDirectConnection, detectLocalProxies };
|