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