Explorar o código

添加debug命令请求头智能组织改进任务记录文档

AI Assistant hai 6 meses
pai
achega
26ddcb2365

+ 203 - 0
AiWork/2025年06月/190230-debug命令请求头智能组织改进.md

@@ -0,0 +1,203 @@
+# debug:reproduce-error 命令请求头智能组织改进
+
+**时间**: 2025年06月19日 02:30:25 CST  
+**任务**: 改进 debug:reproduce-error 命令,使其能够根据请求的header来组织请求内容
+
+## 任务概述
+
+在完成响应头智能显示改进的基础上,进一步改进 `debug:reproduce-error` 命令,使其能够根据请求头信息来智能组织和分析请求内容,提供更详细的请求分析和更智能的数据源选择。
+
+## 改进内容
+
+### 1. 完整的请求头信息显示
+
+#### 新增功能
+- **完整显示所有请求头**:不再只显示Content-Type和token,而是显示所有HTTP请求头
+- **敏感信息脱敏**:对token、authorization、cookie等敏感头部进行脱敏处理
+- **格式化显示**:清晰的缩进和格式,便于阅读
+
+#### 实现示例
+```
+请求头信息:
+  host: kku_laravel.local.gd
+  content-length: 19
+  user-agent: GuzzleHttp/7
+  content-type: application/x-protobuf
+  accept: application/x-protobuf
+  token: f4b3c51a58...(已脱敏)
+```
+
+### 2. 智能请求头分析
+
+#### 新增 analyzeRequestHeaders 方法
+分析请求头并提取关键信息:
+
+```php
+$analysis = [
+    'content_type' => 'application/x-protobuf',
+    'content_length' => 19,
+    'user_agent' => 'GuzzleHttp/7',
+    'auth_type' => 'Token',
+    'is_ajax' => false,
+    'is_mobile' => false,
+    'has_custom_headers' => true,
+    'custom_headers' => [...],
+    'security_headers' => [...]
+];
+```
+
+#### 分析维度
+- **内容类型检测**:Content-Type、编码格式
+- **认证方式识别**:Token、Bearer、Basic等
+- **设备类型检测**:移动设备、桌面设备
+- **请求类型判断**:AJAX请求、普通请求
+- **自定义头部统计**:X-开头的自定义头部
+- **安全头部检测**:CSRF、XSS防护等安全相关头部
+
+### 3. 智能数据源推荐
+
+#### 新增 determineBestDataSource 方法
+根据请求头分析结果智能推荐最佳数据源:
+
+```php
+// JSON Content-Type → 推荐 protobuf_json
+// Protobuf Content-Type → 推荐 post
+// AJAX请求 → 推荐 protobuf_json
+// 默认 → 推荐 post
+```
+
+#### 推荐逻辑
+1. **Content-Type优先**:根据明确的Content-Type指示选择
+2. **请求特征判断**:AJAX请求通常使用JSON格式
+3. **智能回退**:推荐失败时回退到原有逻辑
+
+### 4. 增强的请求数据信息显示
+
+#### 新增 displayRequestDataInfo 方法
+提供更详细的请求数据分析:
+
+```
+请求数据信息:
+  数据源: post
+  数据类型: protobuf
+  数据分析:
+    原始大小: 28 字节
+    解码后大小: 19 字节
+    Content-Type: application/x-protobuf
+    检测类型: protobuf
+  请求上下文: 自定义头部8个
+```
+
+#### 显示内容
+- **数据源信息**:使用的数据源和检测到的类型
+- **大小分析**:原始大小、解码后大小
+- **类型检测**:Content-Type和实际检测的类型
+- **上下文信息**:AJAX、移动设备、认证方式等
+
+### 5. 智能数据类型检测
+
+#### 新增 determineDataType 方法
+多层次的数据类型检测:
+
+1. **Content-Type检测**:优先根据HTTP头部判断
+2. **请求特征检测**:AJAX请求通常是JSON
+3. **内容分析检测**:分析数据内容特征
+4. **默认回退**:无法确定时使用默认类型
+
+#### 新增 looksLikeJson 方法
+智能检测数据是否为JSON格式:
+- 检查开始字符({、[、")
+- 尝试JSON解析验证
+- 返回检测结果
+
+## 技术实现
+
+### 核心方法
+
+1. **displayRequestHeaders()** - 显示完整请求头信息
+2. **analyzeRequestHeaders()** - 分析请求头并提取关键信息
+3. **displayHeaderAnalysis()** - 显示请求头分析结果
+4. **determineBestDataSource()** - 智能推荐数据源
+5. **determineDataType()** - 智能检测数据类型
+6. **displayRequestDataInfo()** - 显示增强的请求数据信息
+7. **isMobileUserAgent()** - 检测移动设备User-Agent
+8. **looksLikeJson()** - 检测数据是否为JSON格式
+
+### 数据流程改进
+
+1. **解析请求头** → **分析请求头** → **显示分析结果**
+2. **智能推荐数据源** → **准备请求数据** → **显示数据信息**
+3. **类型检测** → **内容预览** → **发起请求**
+
+## 测试验证
+
+### 测试用例1:Protobuf请求
+```
+请求头分析:
+  Content-Type: application/x-protobuf
+  Content-Length: 19 字节
+  自定义头部: 8 个
+根据请求头分析,推荐使用数据源: post
+```
+
+### 测试用例2:JSON请求
+```
+请求头分析:
+  Content-Type: application/json
+  Content-Length: 33 字节
+  自定义头部: 7 个
+根据请求头分析,推荐使用数据源: protobuf_json
+```
+
+## 改进效果
+
+### 1. 调试能力提升
+- ✅ 完整的请求头信息,便于分析请求来源和特征
+- ✅ 智能的数据源推荐,提高请求重放成功率
+- ✅ 详细的数据分析,帮助理解请求结构
+
+### 2. 用户体验改善
+- ✅ 更清晰的信息组织和显示
+- ✅ 智能化的分析和推荐
+- ✅ 敏感信息的安全处理
+
+### 3. 功能增强
+- ✅ 支持多种请求类型的智能识别
+- ✅ 支持移动设备和AJAX请求的特殊处理
+- ✅ 支持自定义头部和安全头部的检测
+
+## 兼容性保持
+
+- ✅ 保持所有原有命令参数和选项
+- ✅ 向后兼容现有的数据源选择逻辑
+- ✅ 不影响现有的请求重放功能
+
+## 文件修改
+
+### 主要修改
+- `app/Console/Commands/ReproduceErrorCommand.php`
+  - 新增请求头显示和分析功能
+  - 新增智能数据源推荐功能
+  - 新增增强的数据信息显示
+  - 更新数据准备流程
+
+### 新增方法
+- `displayRequestHeaders()` - 显示请求头信息
+- `analyzeRequestHeaders()` - 分析请求头
+- `displayHeaderAnalysis()` - 显示分析结果
+- `determineBestDataSource()` - 推荐数据源
+- `determineDataType()` - 检测数据类型
+- `displayRequestDataInfo()` - 显示数据信息
+- `isMobileUserAgent()` - 检测移动设备
+- `looksLikeJson()` - 检测JSON格式
+
+## 总结
+
+此次改进大幅提升了 `debug:reproduce-error` 命令对请求内容的组织和分析能力:
+
+1. **完整性**:显示所有请求头信息,不遗漏任何调试线索
+2. **智能性**:根据请求头特征智能推荐最佳处理方式
+3. **安全性**:对敏感信息进行适当的脱敏处理
+4. **实用性**:提供详细的分析信息,帮助快速定位问题
+
+这些改进使得命令在实际调试工作中更加智能和高效,能够更好地理解和重现各种类型的HTTP请求。