|
|
@@ -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请求。
|