const axios = require('axios'); const yaml = require('yaml'); async function testSubscription() { const subscriptionUrl = 'http://so.xfxssr.me/api/v1/client/subscribe?token=7854d59f38ac51700730b9e782c5160c'; try { console.log('🔍 测试订阅URL...'); console.log(`URL: ${subscriptionUrl}\n`); const response = await axios.get(subscriptionUrl, { timeout: 30000, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } }); console.log('✅ 成功获取响应'); console.log(`状态码: ${response.status}`); console.log(`内容长度: ${response.data.length} 字符`); console.log(`内容类型: ${response.headers['content-type'] || '未知'}\n`); // 显示前500个字符 console.log('📄 响应内容预览 (前500字符):'); console.log('='.repeat(50)); console.log(response.data.substring(0, 500)); console.log('='.repeat(50)); console.log(); // 尝试解析为YAML try { console.log('🔄 尝试解析为YAML...'); const config = yaml.parse(response.data); if (config.proxies && Array.isArray(config.proxies)) { console.log(`✅ 成功解析YAML,找到 ${config.proxies.length} 个代理节点`); // 显示前几个节点的信息 console.log('\n📋 前3个节点信息:'); config.proxies.slice(0, 3).forEach((proxy, index) => { console.log(`${index + 1}. ${proxy.name} (${proxy.type}) - ${proxy.server}:${proxy.port}`); }); } else { console.log('❌ YAML解析成功,但没有找到proxies数组'); console.log('配置键:', Object.keys(config)); } } catch (yamlError) { console.log('❌ YAML解析失败:', yamlError.message); // 尝试Base64解码 try { console.log('\n🔄 尝试Base64解码...'); const decoded = Buffer.from(response.data, 'base64').toString('utf8'); console.log('✅ Base64解码成功'); console.log('解码后内容长度:', decoded.length); const config = yaml.parse(decoded); if (config.proxies && Array.isArray(config.proxies)) { console.log(`✅ 成功解析Base64解码后的YAML,找到 ${config.proxies.length} 个代理节点`); } else { console.log('❌ Base64解码后仍没有找到proxies数组'); } } catch (base64Error) { console.log('❌ Base64解码失败:', base64Error.message); } } } catch (error) { console.error('❌ 请求失败:', error.message); if (error.response) { console.error('状态码:', error.response.status); console.error('响应头:', error.response.headers); } } } testSubscription();