85 lines
2.8 KiB
Markdown
85 lines
2.8 KiB
Markdown
# CLAUDE_CN.md
|
||
|
||
此文件为 Claude Code (claude.ai/code) 在此代码仓库中工作时提供中文指导。
|
||
|
||
## 项目概述
|
||
|
||
这是一个使用 Python 和 Playwright 构建的自动化 FRP (NATFRP) 签到机器人。该应用程序可以自动在 www.natfrp.com 上进行每日签到,具备验证码破解能力。
|
||
|
||
## 架构设计
|
||
|
||
### 核心组件
|
||
|
||
- **main.py**: 包含所有自动化逻辑的单文件应用程序
|
||
- **计算机视觉模块** (`get_gap_offset`): 使用 OpenCV 通过检测背景图像缺口来破解滑动验证码
|
||
- **浏览器自动化**: 使用 Playwright 与 NATFRP 网站交互
|
||
- **状态管理**: 使用 `state.json` 保存登录会话以避免重复登录
|
||
- **重试机制**: 内置重试逻辑,支持配置最大重试次数
|
||
|
||
### 关键函数
|
||
|
||
- `get_gap_offset()`: 验证码破解器,使用图像差异检测 (main.py:7-51)
|
||
- `main()`: 主要自动化工作流程 (main.py:251-324)
|
||
- `solve_geetest_puzzle()`: 处理极验验证码破解 (main.py:220-235)
|
||
- `wait_signed_text_and_shoot()`: 成功检测和截图保存 (main.py:238-248)
|
||
|
||
## 运行应用程序
|
||
|
||
### 基本执行
|
||
```bash
|
||
python main.py
|
||
```
|
||
|
||
### 依赖项
|
||
项目需要以下依赖:
|
||
- playwright
|
||
- opencv-python (cv2)
|
||
- pathlib (内置模块)
|
||
|
||
安装 Playwright 浏览器:
|
||
```bash
|
||
playwright install chromium
|
||
```
|
||
|
||
## 配置文件
|
||
|
||
- **account.txt**: 包含 NATFRP 登录用户名(第1行)和密码(第2行)
|
||
- **state.json**: 浏览器会话状态,用于保持登录状态
|
||
- **.gitignore**: 排除敏感文件和调试图像
|
||
|
||
## 生成文件
|
||
|
||
- **bg.png, fullbg.png**: 验证码破解过程中提取的背景图像
|
||
- **debug_*.png**: 验证码破解分析的调试图像(当 debug=True 时)
|
||
- **checkin.png**: 签到成功时保存的截图
|
||
|
||
## 配置变量
|
||
|
||
main.py:53-64 中的关键设置:
|
||
- `MAX_RETRY`: 最大重试次数(0表示无限重试)
|
||
- `ALREADY_SIGNED_TEXT`: 成功检测文本("今天已经签到过啦")
|
||
- `SIGNED_ANCESTOR_LEVELS`: 截图捕获深度(3层父级元素)
|
||
- `SIGNED_ANCESTOR_SCREENSHOT`: 成功截图文件名
|
||
|
||
## 验证码破解流程
|
||
|
||
1. 提取带缺口的背景图像(`bg.png`)
|
||
2. 提取完整背景图像(`fullbg.png`)
|
||
3. 计算两张图像的绝对差异
|
||
4. 应用二值化阈值并查找轮廓
|
||
5. 根据最大轮廓选择缺口位置
|
||
6. 模拟人类般的鼠标拖拽来破解验证码
|
||
|
||
## 浏览器配置
|
||
|
||
- 默认以非无头模式运行(`headless=False`)
|
||
- 使用 `slow_mo=200` 实现类人交互时序
|
||
- 通过 `state.json` 在运行间保持会话状态
|
||
|
||
## 使用说明
|
||
|
||
1. 确保 `account.txt` 文件包含正确的用户名和密码
|
||
2. 首次运行会创建 `state.json` 保存登录状态
|
||
3. 程序会自动检测是否已签到,避免重复操作
|
||
4. 遇到验证码时会自动进行图像识别和破解
|
||
5. 签到成功后会保存截图作为凭证 |