# 反检测功能使用指南
## 概述
本项目已集成完整的反机器人检测功能,通过模拟人类行为、浏览器指纹伪装、操作频率限制等多种手段,降低被小红书官方检测为机器人的风险。
## 核心功能
### 1. 人类行为模拟 (HumanBehavior)
模拟真实用户的操作行为:
- **随机延迟** - 操作间随机等待,模拟思考时间
- **打字延迟** - 逐字输入带随机延迟,模拟真实打字速度
- **阅读延迟** - 根据文本长度模拟阅读时间
- **鼠标移动** - 随机鼠标轨迹,模拟真实鼠标操作
- **页面滚动** - 随机滚动页面,模拟浏览行为
### 2. 浏览器指纹伪装 (BrowserFingerprint)
隐藏自动化工具特征:
- **随机视口大小** - 模拟不同屏幕分辨率
- **真实 User-Agent** - 使用真实浏览器标识
- **地理位置** - 设置上海地区坐标(带随机偏移)
- **语言和时区** - 设置中文环境
- **WebDriver 隐藏** - 移除 `navigator.webdriver` 标识
- **Plugins 伪装** - 模拟真实浏览器插件
### 3. 操作频率限制 (RateLimiter)
控制操作频率,避免异常行为:
- **操作间隔限制** - 确保两次操作之间有足够间隔
- **每日操作限制** - 限制每日发布、评论、点赞等操作次数
- **自动计数** - 自动跟踪操作次数
默认限制:
- 发布: 10 次/天
- 评论: 50 次/天
- 点赞: 100 次/天
- 收藏: 50 次/天
### 4. 统一管理器 (AntiDetectionManager)
集中管理所有反检测功能:
- **页面准备** - 自动应用反检测脚本
- **操作前检查** - 自动检查频率限制和延迟
- **操作后处理** - 自动记录操作和随机行为
## 配置说明
### 环境变量配置
在 `.env` 文件中配置:
```bash
# 反检测配置
ENABLE_STEALTH=true # 是否启用反检测(默认: true)
MIN_ACTION_DELAY=1000 # 最小操作延迟(毫秒,默认: 1000)
MAX_ACTION_DELAY=3000 # 最大操作延迟(毫秒,默认: 3000)
DAILY_PUBLISH_LIMIT=10 # 每日发布限制(默认: 10)
DAILY_COMMENT_LIMIT=50 # 每日评论限制(默认: 50)
DAILY_LIKE_LIMIT=100 # 每日点赞限制(默认: 100)
DAILY_FAVORITE_LIMIT=50 # 每日收藏限制(默认: 50)
# 浏览器配置
HEADLESS=false # 建议使用非 headless 模式
BROWSER_BIN_PATH=/path/to/chrome # 使用真实 Chrome 浏览器
```
### 推荐配置
**开发/测试环境**:
```bash
ENABLE_STEALTH=true
HEADLESS=false
MIN_ACTION_DELAY=1000
MAX_ACTION_DELAY=2000
```
**生产环境**:
```bash
ENABLE_STEALTH=true
HEADLESS=false
MIN_ACTION_DELAY=2000
MAX_ACTION_DELAY=5000
DAILY_PUBLISH_LIMIT=5
```
## 使用示例
### 自动集成
反检测功能已自动集成到所有操作中,无需手动调用:
```python
# 发布功能已自动应用反检测
from xiaohongshu.publish import PublishAction
publish_action = PublishAction(page)
await publish_action.publish(
title="测试标题",
content="测试内容",
images=["image.jpg"],
tags=["标签1", "标签2"]
)
# 自动应用:
# - 速率限制检查
# - 随机延迟
# - 人类化打字
# - 鼠标移动
# - 操作计数
```
### 手动使用
如果需要在其他模块中使用:
```python
from anti_detection import get_anti_detection_manager
# 获取管理器实例
anti_detection = get_anti_detection_manager()
# 操作前检查
if await anti_detection.before_action("comment", min_delay=2000, max_delay=4000):
# 执行操作
await page.fill("textarea", "评论内容")
# 操作后处理
await anti_detection.after_action("comment", page)
```
### 人类化打字
```python
from anti_detection import HumanBehavior
human = HumanBehavior()
# 人类化输入文本
await human.human_type(
input_element,
"要输入的文本",
min_delay=0.05, # 最小延迟(秒)
max_delay=0.15 # 最大延迟(秒)
)
```
### 随机行为
```python
from anti_detection import HumanBehavior
human = HumanBehavior()
# 随机延迟
await human.random_delay(1000, 3000)
# 随机鼠标移动
await human.random_mouse_movement(page)
# 随机滚动
await human.random_scroll(page)
# 阅读延迟
await human.reading_delay(text_length=100)
```
## 已集成的模块
### ✅ browser/browser.py
- 浏览器启动时自动应用指纹伪装
- 创建页面时自动应用反检测脚本
### ✅ xiaohongshu/publish.py
- 发布前自动检查速率限制
- 所有操作使用随机延迟
- 标题和内容使用人类化打字
- 自动鼠标移动和随机行为
### 🔨 待集成模块
- `xiaohongshu/comment_feed.py` - 评论功能
- `xiaohongshu/like_favorite.py` - 点赞收藏功能
- `xiaohongshu/search.py` - 搜索功能
## 工作原理
### 1. 浏览器启动流程
```
启动浏览器
↓
应用指纹伪装配置
↓
创建浏览器上下文
↓
创建页面
↓
注入反检测脚本
↓
随机鼠标移动
```
### 2. 发布操作流程
```
检查每日限制
↓
等待速率限制
↓
随机延迟(2-5秒)
↓
导航到发布页面
↓
模拟阅读页面
↓
上传图片(带延迟)
↓
人类化输入标题
↓
人类化输入内容
↓
人类化输入标签
↓
随机鼠标移动
↓
点击发布按钮
↓
记录操作计数
↓
随机后续行为
```
## 效果验证
### 检查反检测是否生效
1. **查看日志**:
```bash
tail -f server.log | grep "anti-detection"
```
应该看到类似输出:
```
Created new page with anti-detection
已应用反检测脚本
速率限制: publish 需要等待 3.2 秒
```
2. **浏览器控制台检查**:
```javascript
// 在浏览器控制台执行
console.log(navigator.webdriver); // 应该是 undefined
console.log(navigator.plugins.length); // 应该 > 0
```
3. **观察操作行为**:
- 操作之间有明显延迟
- 输入文本逐字显示
- 鼠标有随机移动
- 页面有随机滚动
## 注意事项
### ⚠️ 重要提示
1. **不要过度使用**
- 即使有反检测,也要控制操作频率
- 建议每日发布不超过 5-10 条
- 避免短时间内大量操作
2. **使用真实浏览器**
- 建议使用本地 Chrome 而不是 Chromium
- 设置 `BROWSER_BIN_PATH` 指向真实浏览器
3. **非 headless 模式**
- 建议使用 `HEADLESS=false`
- headless 模式更容易被检测
4. **保持更新**
- 小红书的检测机制会不断更新
- 定期检查是否需要调整策略
5. **监控账号状态**
- 关注是否出现验证码
- 关注是否有账号限制提示
- 如果频繁触发验证,降低操作频率
### 🔧 调试技巧
1. **查看详细日志**:
```bash
LOG_LEVEL=DEBUG python main.py
```
2. **测试反检测脚本**:
```python
# 在浏览器控制台测试
console.log({
webdriver: navigator.webdriver,
plugins: navigator.plugins.length,
languages: navigator.languages,
userAgent: navigator.userAgent
});
```
3. **调整延迟参数**:
```bash
# 如果操作太慢,减小延迟
MIN_ACTION_DELAY=500
MAX_ACTION_DELAY=1500
# 如果担心被检测,增加延迟
MIN_ACTION_DELAY=3000
MAX_ACTION_DELAY=6000
```
## 进阶配置
### 自定义每日限制
在代码中修改 `anti_detection/anti_detection.py`:
```python
class RateLimiter:
def __init__(self):
self.daily_limits: dict[str, int] = {
"publish": 5, # 更保守的限制
"comment": 30,
"like": 50,
"favorite": 30,
}
```
### 自定义延迟范围
在 `.env` 中调整:
```bash
# 更保守的配置
MIN_ACTION_DELAY=3000
MAX_ACTION_DELAY=8000
# 更激进的配置(不推荐)
MIN_ACTION_DELAY=500
MAX_ACTION_DELAY=1000
```
### 添加更多随机行为
在 `publish.py` 中添加:
```python
# 随机滚动页面
if random.random() < 0.3: # 30% 概率
await self._anti_detection.human_behavior.random_scroll(self.page)
# 随机停顿
if random.random() < 0.2: # 20% 概率
await self._anti_detection.human_behavior.random_delay(5000, 10000)
```
## 故障排除
### 问题 1: 导入错误
```
ImportError: cannot import name 'get_anti_detection_manager'
```
**解决**:
```bash
# 确保安装了新依赖
pip install -r requirements.txt
```
### 问题 2: 操作太慢
**解决**:
```bash
# 减小延迟参数
MIN_ACTION_DELAY=500
MAX_ACTION_DELAY=1500
```
### 问题 3: 仍然被检测
**解决**:
1. 检查是否使用真实浏览器
2. 增加操作延迟
3. 降低每日操作限制
4. 使用非 headless 模式
5. 检查账号是否已被标记
## 更新日志
### v1.0.0 (2026-01-17)
- ✅ 创建反检测工具模块
- ✅ 集成浏览器指纹伪装
- ✅ 集成人类行为模拟
- ✅ 集成操作频率限制
- ✅ 更新发布功能使用反检测
- ✅ 添加配置选项
### 待实现
- 🔨 集成到评论功能
- 🔨 集成到点赞收藏功能
- 🔨 集成到搜索功能
- 🔨 添加更多随机行为模式
- 🔨 添加账号健康度监控
## 参考资料
- [Playwright Stealth](https://github.com/AtuboDad/playwright_stealth)
- [浏览器指纹识别技术](https://fingerprintjs.com/)
- [反爬虫最佳实践](https://github.com/topics/anti-bot)
---
**最后更新**: 2026-01-17
**维护者**: xiaohongshu-python 项目组