116 lines
4.7 KiB
Markdown
116 lines
4.7 KiB
Markdown
# SAKURA FRP 自动签到脚本
|
||
|
||
> 自动访问 `https://www.natfrp.com/user/` 完成每日签到;支持在本地直接运行,也支持在 **QingLong(青龙)** 定时任务中运行。
|
||
> 成功后会自动保存签到结果截图(默认:`checkin.png`),并在必要时自动处理滑块验证。
|
||
|
||
## 一、目录结构
|
||
|
||
```
|
||
.
|
||
├─ main.py # 主程序(无需改动即可用)
|
||
├─ account.txt # 账号文件(必填:第1行用户名;第2行密码)
|
||
├─ state.json # 登录状态缓存文件(自动生成与更新)
|
||
└─ checkin.png # 成功时保存的签到区域截图(自动生成)
|
||
```
|
||
|
||
> 说明:程序会优先尝试复用 `state.json` 中的登录状态;状态失效时会自动回退为账号密码登录。
|
||
|
||
## 二、准备工作
|
||
|
||
1. **创建账号文件 `account.txt`**
|
||
- 第 1 行:用户名
|
||
- 第 2 行:密码
|
||
- 文件编码建议使用 `UTF-8`,不要多余空行或空格。
|
||
示例:
|
||
```
|
||
your_username
|
||
your_password
|
||
```
|
||
|
||
2. **(可选)检查/调整配置** — 打开 `main.py` 顶部“配置”区域,可按需修改:
|
||
- `ACCOUNT_FILE`:账号文件路径(默认 `account.txt`)
|
||
- `STATE_FILE`:状态缓存文件(默认 `state.json`)
|
||
- `MAX_RETRY`:失败重试次数(`0` 表示无限重试)
|
||
- `SIGNED_ANCESTOR_SCREENSHOT`:成功截图文件名(默认 `checkin.png`)
|
||
|
||
> **无需修改网站域名与地址**,默认已指向 `https://www.natfrp.com/user/`。
|
||
|
||
## 三、环境要求
|
||
|
||
需要安装Playwright及其依赖,推荐使用 Python 3.7 及以上版本。
|
||
|
||
## 四、在 QingLong(青龙)中使用
|
||
|
||
> 适用于青龙面板 v2.XX 及以上版本(路径请以你面板的实际目录为准)。
|
||
|
||
### 1)放置脚本与账号文件
|
||
|
||
方式 A:在面板「文件管理」中将 `main.py` 和 `account.txt` 上传到脚本目录,例如:
|
||
```
|
||
/ql/data/scripts/natfrp_checkin/
|
||
```
|
||
|
||
方式 B:通过仓库/订阅拉取(如你有自建仓库),确保最终能在脚本目录看到 `main.py` 与 `account.txt`。
|
||
|
||
> **注意**:`account.txt` 一定要跟 `main.py` 放在同一目录(或同步修改 `ACCOUNT_FILE` 为你的自定义路径)。
|
||
|
||
### 2)创建定时任务
|
||
|
||
在青龙面板 ->「定时任务」->「新建任务」:
|
||
|
||
- **名称**:NATFRP 自动签到
|
||
- **命令**(按你的实际路径替换):
|
||
```bash
|
||
python3 /ql/data/scripts/natfrp_checkin/main.py
|
||
```
|
||
- **定时规则(CRON)**:建议每日固定时间运行一次,例如每天 8:10:
|
||
```
|
||
10 8 * * *
|
||
```
|
||
|
||
保存后即可生效。你也可以在任务列表中手动点击「运行」测试是否正常。
|
||
|
||
### 3)查看运行日志与产物
|
||
|
||
- 在任务详情页可查看实时日志;
|
||
- 成功后会生成 `checkin.png`(截图)与 `state.json`(状态);
|
||
- 若失败,会打印原因并根据 `MAX_RETRY` 自动重试。
|
||
|
||
## 五、常见问题
|
||
|
||
1. **提示账号文件不存在或格式错误**
|
||
- 确认 `account.txt` 与 `main.py` 在同一目录;
|
||
- 确认文件编码为 `UTF-8`,且只有两行:第一行用户名,第二行密码;
|
||
- 不要包含多余空行或空格。
|
||
|
||
2. **一直提示登录状态过期**
|
||
- 删除同目录下旧的 `state.json` 后重跑;
|
||
- 确认账号密码正确;
|
||
- 网络/地区问题可能导致访问异常,可稍后再试。
|
||
|
||
3. **出现滑块但始终无法通过**
|
||
- 目标站点的风控策略可能调整;
|
||
- 可适当增加重试次数(`MAX_RETRY`),或更换执行时间段;
|
||
- 若长时间失败,建议手动登录一次,让站点信任度恢复。
|
||
|
||
4. **成功了但没有截图**
|
||
- 程序以出现“今天已经签到过啦”的提示为成功判据;
|
||
- 如果站点文案发生变化,可修改 `ALREADY_SIGNED_TEXT`;
|
||
- 截图保存路径由 `SIGNED_ANCESTOR_SCREENSHOT` 控制(默认 `checkin.png`)。
|
||
|
||
5. **青龙里命令执行不动或报路径错误**
|
||
- 确认命令中的绝对路径与实际文件路径一致;
|
||
- 如果你把文件放在其它目录,务必同步修改命令与 `ACCOUNT_FILE` 路径。
|
||
|
||
## 六、日志与产物
|
||
|
||
- **日志输出**:执行时会输出每一步进度与判定结果,便于排查。
|
||
- **截图与状态**:
|
||
- `checkin.png`:成功时的页面关键区域截图;
|
||
- `state.json`:登录状态缓存(自动生成/刷新);
|
||
- 若启用内部调试流程,可能在同目录产生若干 `debug_*.png` 用于图像比对,这些文件可忽略或自行清理。
|
||
|
||
---
|
||
|
||
**至此即可完成配置与使用。**
|
||
如需嵌入到你现有的青龙仓库,只要保证 `main.py` 与 `account.txt` 的相对位置一致,并按上文的命令与定时规则召唤即可。祝签到愉快 🎯 |