diff --git a/public/js/proxies.js b/public/js/proxies.js
index 8996b82..3d7ea01 100644
--- a/public/js/proxies.js
+++ b/public/js/proxies.js
@@ -333,6 +333,42 @@ class ProxyManager {
document.getElementById('validationStatus').textContent = '验证完成';
// 显示结果
+ let responseResultHtml = '';
+
+ if (result.data.responseStatus !== null && result.data.responseStatus !== undefined) {
+ responseResultHtml = `
+
+ 响应结果:
+ 状态码: ${result.data.responseStatus}
+ `;
+
+ if (result.data.responseData) {
+ // 限制显示长度,避免内容过长
+ let displayData = result.data.responseData;
+ const maxLength = 300;
+ if (displayData.length > maxLength) {
+ displayData = displayData.substring(0, maxLength) + '... (内容已截断,完整内容请查看日志)';
+ }
+
+ responseResultHtml += `
+ 响应内容:
+ ${this.escapeHtml(displayData)}
+ `;
+ }
+
+ if (result.data.testUrl) {
+ responseResultHtml += `
+ 测试URL: ${result.data.testUrl}
+ `;
+ }
+ } else if (result.data.error) {
+ responseResultHtml = `
+
+ 响应结果:
+ 错误: ${result.data.error}
+ `;
+ }
+
document.getElementById('validationResults').innerHTML = `
验证结果: ${result.data.isValid ? '成功' : '失败'}
@@ -340,6 +376,7 @@ class ProxyManager {
响应时间: ${result.data.responseTime}ms
${result.data.error ? `
错误信息: ${result.data.error}
` : ''}
+ ${responseResultHtml}
`;
// 延迟刷新列表
@@ -581,6 +618,13 @@ class ProxyManager {
return icons[type] || 'info-circle-fill';
}
+ escapeHtml(text) {
+ if (!text) return '';
+ const div = document.createElement('div');
+ div.textContent = text;
+ return div.innerHTML;
+ }
+
convertToCSV(data) {
if (!data || data.length === 0) return '';
diff --git a/src/services/validator.js b/src/services/validator.js
index 37a5e4d..f7c4465 100644
--- a/src/services/validator.js
+++ b/src/services/validator.js
@@ -94,13 +94,32 @@ class ProxyValidator {
console.log(`✓ 代理 ${ip}:${port} 第 ${attemptNumber} 次尝试验证成功,响应时间: ${responseTime}ms`);
}
+ // 提取响应信息用于显示
+ let responseData = '';
+ let responseStatus = response.status;
+ try {
+ // 只取响应数据的前500个字符,避免数据过大
+ const dataStr = typeof response.data === 'string'
+ ? response.data
+ : JSON.stringify(response.data);
+ responseData = dataStr.substring(0, 500);
+ if (dataStr.length > 500) {
+ responseData += '... (已截断)';
+ }
+ } catch (e) {
+ responseData = '无法解析响应内容';
+ }
+
const result = {
ip: ip,
port: parseInt(port),
isValid: true,
responseTime: responseTime,
error: null,
- testUrl: testUrl
+ testUrl: testUrl,
+ responseStatus: responseStatus,
+ responseData: responseData,
+ responseHeaders: response.headers || {}
};
// 更新数据库中的验证结果(如果需要)
@@ -124,13 +143,33 @@ class ProxyValidator {
}
lastError = new Error('响应内容验证失败');
+ // 提取响应信息
+ let responseData = '';
+ let responseStatus = response ? response.status : null;
+ try {
+ if (response && response.data) {
+ const dataStr = typeof response.data === 'string'
+ ? response.data
+ : JSON.stringify(response.data);
+ responseData = dataStr.substring(0, 500);
+ if (dataStr.length > 500) {
+ responseData += '... (已截断)';
+ }
+ }
+ } catch (e) {
+ responseData = '无法解析响应内容';
+ }
+
lastResult = {
ip: ip,
port: parseInt(port),
isValid: false,
responseTime: responseTime,
error: '响应内容验证失败',
- testUrl: testUrl
+ testUrl: testUrl,
+ responseStatus: responseStatus,
+ responseData: responseData,
+ responseHeaders: response ? (response.headers || {}) : {}
};
// 如果还有重试机会,继续尝试
@@ -147,7 +186,10 @@ class ProxyValidator {
isValid: false,
responseTime: responseTime,
error: error.message,
- testUrl: testUrl
+ testUrl: testUrl,
+ responseStatus: null,
+ responseData: null,
+ responseHeaders: {}
};
if (logResult) {
@@ -184,7 +226,10 @@ class ProxyValidator {
isValid: false,
responseTime: Date.now() - startTime,
error: lastError ? lastError.message : '所有验证尝试都失败',
- testUrl: testUrl
+ testUrl: testUrl,
+ responseStatus: null,
+ responseData: null,
+ responseHeaders: {}
};
}