2.8 KiB
2.8 KiB
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)
运行应用程序
基本执行
python main.py
依赖项
项目需要以下依赖:
- playwright
- opencv-python (cv2)
- pathlib (内置模块)
安装 Playwright 浏览器:
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: 成功截图文件名
验证码破解流程
- 提取带缺口的背景图像(
bg.png) - 提取完整背景图像(
fullbg.png) - 计算两张图像的绝对差异
- 应用二值化阈值并查找轮廓
- 根据最大轮廓选择缺口位置
- 模拟人类般的鼠标拖拽来破解验证码
浏览器配置
- 默认以非无头模式运行(
headless=False) - 使用
slow_mo=200实现类人交互时序 - 通过
state.json在运行间保持会话状态
使用说明
- 确保
account.txt文件包含正确的用户名和密码 - 首次运行会创建
state.json保存登录状态 - 程序会自动检测是否已签到,避免重复操作
- 遇到验证码时会自动进行图像识别和破解
- 签到成功后会保存截图作为凭证