131 lines
3.9 KiB
Markdown
131 lines
3.9 KiB
Markdown
# 小红书上传器改进总结
|
||
|
||
## 问题背景
|
||
|
||
用户在使用小红书上传器时遇到两个主要问题:
|
||
1. **无头模式下找不到上传元素** - 导致文件上传失败
|
||
2. **有头模式下突然跳转到登录页面** - 说明反自动化检测被触发
|
||
|
||
## 解决方案概述
|
||
|
||
### 1. 登录状态检测与处理
|
||
|
||
#### 新增功能
|
||
- **`check_and_handle_login_status()`** - 智能检测登录状态
|
||
- **`handle_login_redirect()`** - 处理登录重定向问题
|
||
|
||
#### 检测逻辑
|
||
```python
|
||
# 检测登录状态指示器
|
||
login_indicators = [
|
||
# 已登录元素
|
||
'.user-info', '.avatar', '.username',
|
||
'[class*="user"]', '[class*="avatar"]',
|
||
'button[class*="publish"]', 'a[href*="creator"]',
|
||
# 未登录元素
|
||
'button[class*="login"]', 'a[href*="login"]',
|
||
'.login-btn', '.signin'
|
||
]
|
||
```
|
||
|
||
#### 处理策略
|
||
1. 先访问主页建立会话
|
||
2. 检查登录状态
|
||
3. 导航到创作者页面
|
||
4. 二次检查是否被重定向
|
||
5. 提供详细的错误诊断和解决建议
|
||
|
||
### 2. 改进的文件上传处理
|
||
|
||
#### 新增功能
|
||
- **`handle_file_upload_xiaohongshu()`** - 多策略文件上传
|
||
- **`debug_xiaohongshu_page()`** - 页面状态调试
|
||
|
||
#### 上传策略
|
||
```python
|
||
upload_selectors = [
|
||
"div[class^='upload-content'] input[class='upload-input']", # 原始选择器
|
||
'input.upload-input', # 通用选择器
|
||
'input[type="file"]', # 文件输入通用
|
||
'input[accept*="video"]', # 视频文件输入
|
||
'input[accept*="mp4"]', # MP4文件输入
|
||
'.upload-input', # CSS类选择器
|
||
'[class*="upload-input"]', # 包含upload-input的类
|
||
'input[accept*="*"]' # 通用文件输入
|
||
]
|
||
```
|
||
|
||
#### 特性
|
||
- **多重选择器策略** - 按优先级尝试不同的元素选择器
|
||
- **元素状态验证** - 检查元素是否可用和已附加
|
||
- **重试机制** - 最多3次上传尝试
|
||
- **详细日志** - 记录每个步骤的状态
|
||
|
||
### 3. 增强的反检测能力
|
||
|
||
#### 集成统一工具
|
||
- 使用 `utils.anti_detection` 模块
|
||
- **`create_stealth_browser()`** - 创建隐蔽浏览器
|
||
- **`create_stealth_context()`** - 创建隐蔽上下文
|
||
- **`setup_stealth_page()`** - 设置隐蔽页面
|
||
|
||
#### 小红书特定配置
|
||
```python
|
||
# 为小红书设置合适的视口大小
|
||
custom_options = {'viewport': {"width": 1600, "height": 900}}
|
||
```
|
||
|
||
### 4. 调试和诊断工具
|
||
|
||
#### 调试功能
|
||
- **页面状态检查** - URL、标题、HTML长度
|
||
- **错误信息检测** - 自动查找错误提示
|
||
- **截图保存** - 保存调试截图
|
||
- **详细日志** - 记录所有关键操作
|
||
|
||
## 使用建议
|
||
|
||
### 1. 处理登录问题
|
||
如果遇到登录重定向,请:
|
||
1. 检查 `cookies/xiaohongshu_uploader/account.json` 文件是否存在且有效
|
||
2. 重新获取小红书 cookie(运行获取cookie脚本)
|
||
3. 尝试使用有头模式:`headless=False`
|
||
4. 清除浏览器缓存后重新登录
|
||
|
||
### 2. 模式选择
|
||
- **开发和调试阶段**:建议使用 `headless=False`
|
||
- **生产环境**:可以尝试 `headless=True`,但要准备回退方案
|
||
- **首次运行**:建议使用 `headless=False` 确保Cookie有效
|
||
|
||
### 3. 错误处理
|
||
- 检查上传器日志输出
|
||
- 查看生成的调试截图
|
||
- 根据错误信息采取相应措施
|
||
|
||
## 测试方法
|
||
|
||
运行测试脚本验证改进效果:
|
||
```bash
|
||
python examples/test_xiaohongshu_login_check.py
|
||
```
|
||
|
||
测试包括:
|
||
1. 登录状态检测和重定向处理
|
||
2. 无头模式反检测能力
|
||
3. 文件上传元素查找能力
|
||
|
||
## 优势
|
||
|
||
1. **更强的鲁棒性** - 能够处理各种异常情况
|
||
2. **更好的反检测** - 集成了最新的反检测技术
|
||
3. **详细的诊断** - 提供全面的错误信息和解决建议
|
||
4. **灵活的策略** - 支持多种元素定位和上传策略
|
||
5. **便于调试** - 丰富的日志和调试工具
|
||
|
||
## 注意事项
|
||
|
||
- 小红书的反自动化检测较为严格,建议优先使用有头模式
|
||
- Cookie有效性是成功上传的关键因素
|
||
- 网络环境和页面加载速度可能影响上传成功率
|
||
- 定期更新反检测策略以适应平台变化
|