SakuraFrp 自动签到(main + sakura_frp_auto_check + SakuraFrpQiandao),已排除 .env 与日志
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# 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. 签到成功后会保存截图作为凭证
|
||||
Reference in New Issue
Block a user