test_invalid_nodes.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. const SpeedTester = require('./src/core/speedTester');
  2. const logger = require('./src/utils/logger');
  3. // 测试无效节点
  4. const invalidNodes = [
  5. {
  6. id: 1,
  7. name: '最新官网:so.xfxssr.me',
  8. type: 'ss',
  9. server: '最新官网:so.xfxssr.me',
  10. port: 1080,
  11. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  12. cipher: 'chacha20-ietf-poly1305'
  13. },
  14. {
  15. id: 2,
  16. name: 'x 代表使用倍率',
  17. type: 'ss',
  18. server: 'x 代表使用倍率',
  19. port: 1080,
  20. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  21. cipher: 'chacha20-ietf-poly1305'
  22. },
  23. {
  24. id: 3,
  25. name: '用不了,请更新订阅',
  26. type: 'ss',
  27. server: '用不了,请更新订阅',
  28. port: 1080,
  29. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  30. cipher: 'chacha20-ietf-poly1305'
  31. },
  32. {
  33. id: 4,
  34. name: '永久地址请查看活动公告',
  35. type: 'ss',
  36. server: 'https://sulinkcloud.github.io/',
  37. port: 55626,
  38. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  39. cipher: 'chacha20-ietf-poly1305'
  40. }
  41. ];
  42. // 测试有效节点作为对比
  43. const validNodes = [
  44. {
  45. id: 5,
  46. name: '香港01',
  47. type: 'ss',
  48. server: 'gya.tangu.win',
  49. port: 19630,
  50. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  51. cipher: 'chacha20-ietf-poly1305'
  52. },
  53. {
  54. id: 6,
  55. name: '香港04',
  56. type: 'ss',
  57. server: 'gya.tangu.win',
  58. port: 15635,
  59. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  60. cipher: 'chacha20-ietf-poly1305'
  61. },
  62. {
  63. id: 7,
  64. name: '美国01',
  65. type: 'ss',
  66. server: 'gya.tangu.win',
  67. port: 15532,
  68. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  69. cipher: 'chacha20-ietf-poly1305'
  70. },
  71. {
  72. id: 8,
  73. name: '香港04-备用',
  74. type: 'ss',
  75. server: 'qqa813.198139.xyz',
  76. port: 26642,
  77. password: '235a4cf6-9663-467d-a66f-9bf7cbd31f16',
  78. cipher: 'chacha20-ietf-poly1305'
  79. }
  80. ];
  81. async function testNodes() {
  82. const speedTester = new SpeedTester();
  83. console.log('=== 测试无效节点 ===');
  84. let invalidSuccessCount = 0;
  85. let invalidFailCount = 0;
  86. for (const node of invalidNodes) {
  87. console.log(`\n测试节点: ${node.name}`);
  88. console.log(`服务器: ${node.server}`);
  89. console.log(`类型: ${node.type}`);
  90. try {
  91. const result = await speedTester.testNode(node);
  92. if (result.isSuccess) {
  93. console.log(`结果: ✅ 成功 (这不应该发生!)`);
  94. invalidSuccessCount++;
  95. } else {
  96. console.log(`结果: ❌ 失败 (正确)`);
  97. console.log(`错误: ${result.errorMessage}`);
  98. invalidFailCount++;
  99. }
  100. } catch (error) {
  101. console.log(`异常: ${error.message}`);
  102. invalidFailCount++;
  103. }
  104. }
  105. console.log('\n=== 测试有效节点 ===');
  106. let validSuccessCount = 0;
  107. let validFailCount = 0;
  108. for (const node of validNodes) {
  109. console.log(`\n测试节点: ${node.name}`);
  110. console.log(`服务器: ${node.server}`);
  111. console.log(`类型: ${node.type}`);
  112. try {
  113. const result = await speedTester.testNode(node);
  114. if (result.isSuccess) {
  115. console.log(`结果: ✅ 成功`);
  116. validSuccessCount++;
  117. } else {
  118. console.log(`结果: ❌ 失败`);
  119. console.log(`错误: ${result.errorMessage}`);
  120. validFailCount++;
  121. }
  122. } catch (error) {
  123. console.log(`异常: ${error.message}`);
  124. validFailCount++;
  125. }
  126. }
  127. console.log('\n=== 测试总结 ===');
  128. console.log(`无效节点: ${invalidFailCount}/${invalidNodes.length} 正确失败`);
  129. console.log(`有效节点: ${validSuccessCount}/${validNodes.length} 成功连接`);
  130. console.log(`总成功率: ${validSuccessCount}/${invalidNodes.length + validNodes.length} (${((validSuccessCount/(invalidNodes.length + validNodes.length))*100).toFixed(1)}%)`);
  131. if (invalidSuccessCount === 0 && validSuccessCount > 0) {
  132. console.log('✅ 修复成功!无效节点被正确识别,有效节点可以正常测试');
  133. } else if (invalidSuccessCount > 0) {
  134. console.log('❌ 修复不完整,仍有无效节点显示为成功');
  135. } else if (validSuccessCount === 0) {
  136. console.log('❌ 修复过于严格,有效节点也被阻止了');
  137. }
  138. }
  139. // 运行测试
  140. testNodes().catch(console.error);