Rainyun-Qiandao-V2 是一个基于 Selenium 和 ICR(Image Captcha Recognition)的雨云自动签到工具,通过模拟浏览器操作和高级验证码识别,实现雨云账户的自动每日签到以赚取积分。
- ✅ 自动完成雨云账户登录
- ✅ 使用 ICR 模块进行验证码自动识别(旋转分析+模板匹配)
- ✅ 支持自定义随机延时(5-20秒),避免被系统识别为自动化脚本
- ✅ 支持在本地环境和 GitHub Actions 中运行
- ✅ 集成 webdriver-manager 自动匹配 ChromeDriver
- ✅ 详细的日志记录,便于排查问题
- ✅ 支持多账户签到,每个账户独立运行,互不干扰
- ✅ 支持并发处理,可配置最大并发线程数
- ✅ 批量重试机制,等待所有账户完成后统一重试失败账户
- ✅ 账户处理间隔 5-15 秒随机延时
- ✅ 随机浏览器指纹(User-Agent、分辨率、语言、时区)
- ✅ 每个账户使用独立的随机指纹
- ✅ Cookie 缓存功能,支持免密登录
- ✅ GitHub Actions 缓存支持,持久化 Cookie
- ✅ 支持统一通知,汇总所有账户签到结果
- ✅ 支持7种通知推送方式(Push+、SMTP、Bark、钉钉、飞书、Telegram、Server酱)
- ✅ 支持自动更新功能,检测到新版本或版本过低时自动同步
- Python 3.9+
- Selenium WebDriver 4.27+
- ICR 验证码识别模块(旋转分析+模板匹配)
- OpenCV 图像处理
- Google Chrome 浏览器
- Python 3.9 或更高版本
- Google Chrome 浏览器
git clone https://github.com/scfcn/Rainyun-Qiandao.git
cd Rainyun-Qiandaopython -m pip install --upgrade pip
pip install -r requirements.txt本项目已集成自动匹配 ChromeDriver 的功能,无需手动下载和配置。工具将按以下顺序尝试:
- 使用 webdriver-manager 自动安装匹配的 ChromeDriver
- 使用系统路径中的 ChromeDriver
- 尝试常见的备用路径
# Windows (PowerShell)
$env:RAINYUN_USER = "your_username"
$env:RAINYUN_PASS = "your_password"
# Linux/macOS
export RAINYUN_USER="your_username"
export RAINYUN_PASS="your_password"
# 运行脚本
python rainyun.py支持多行格式,每行一个用户名/密码,数量需匹配:
# Windows (PowerShell)
$env:RAINYUN_USER = "user1`nuser2`nuser3"
$env:RAINYUN_PASS = "pass1`npass2`npass3"
# Linux/macOS
export RAINYUN_USER="user1\nuser2\nuser3"
export RAINYUN_PASS="pass1\npass2\npass3"
# 运行脚本
python rainyun.py创建 .env 文件(已添加到 .gitignore):
RAINYUN_USER=your_username
RAINYUN_PASS=your_password
DEBUG=false
HEADLESS=false
AUTO_UPDATE=true
MAX_WORKERS=2
MAX_RETRIES=1多账户配置:
RAINYUN_USER=user1
user2
user3
RAINYUN_PASS=pass1
pass2
pass3
DEBUG=false
HEADLESS=false
AUTO_UPDATE=true
MAX_WORKERS=2
MAX_RETRIES=1- Fork 本仓库
- 进入仓库的
Settings>Secrets and variables>Actions - 添加以下密钥:
| Secret名称 | 说明 | 必需 |
|---|---|---|
| RAINYUN_USER | 雨云用户名(支持多行,每行一个用户名) | ✅ |
| RAINYUN_PASS | 雨云密码(支持多行,每行一个密码,需与用户名数量匹配) | ✅ |
- 可选的通知推送配置:
| Secret名称 | 说明 | 推送方式 |
|---|---|---|
| PUSH_PLUS_TOKEN | Push+用户令牌 | 微信 |
| PUSH_PLUS_USER | Push+群组编码(可选) | 微信 |
| SMTP_SERVER | SMTP服务器地址 | 邮件 |
| SMTP_SSL | 是否使用SSL (true/false) | 邮件 |
| SMTP_EMAIL | 邮箱地址 | 邮件 |
| SMTP_PASSWORD | 邮箱密码 | 邮件 |
| SMTP_NAME | 发件人姓名 | 邮件 |
| BARK_PUSH | Bark设备码或完整URL | iOS |
| DD_BOT_SECRET | 钉钉机器人密钥 | 钉钉 |
| DD_BOT_TOKEN | 钉钉机器人令牌 | 钉钉 |
| FSKEY | 飞书Webhook密钥 | 飞书 |
| TG_BOT_TOKEN | Telegram机器人令牌 | Telegram |
| TG_USER_ID | Telegram用户ID | Telegram |
| PUSH_KEY | Server酱密钥 | Server酱 |
- 工作流将每天 UTC 4 点(UTC+8 12点)自动运行,也可以手动触发
| 变量名 | 说明 | 默认值 | 必需 |
|---|---|---|---|
| RAINYUN_USER | 雨云用户名(支持多行,每行一个用户名) | - | ✅ |
| RAINYUN_PASS | 雨云密码(支持多行,每行一个密码,需与用户名数量匹配) | - | ✅ |
| HEADLESS | 是否以无头模式运行(true/false) | false | ❌ |
| DEBUG | 是否启用调试模式(true/false) | false | ❌ |
| AUTO_UPDATE | 是否启用自动更新(true/false) | true | ❌ |
| MAX_WORKERS | 最大并发线程数 | 2 | ❌ |
| MAX_RETRIES | 最大重试次数 | 1 | ❌ |
| GITHUB_ACTIONS | 在 GitHub Actions 环境中自动设置为 true,用于强制无头模式 | false | ❌ |
- 随机延时设置为 5-20 秒,可在代码中调整
- 超时时间设置为 15 秒,可在代码中修改
- 验证码识别使用 ICR 模块,支持旋转分析和模板匹配
- Cookie 保存在
cookies/目录 - 每个账户使用独立的 Cookie 文件(基于用户名哈希)
- 支持 7 天免登录
- 使用
actions/cache持久化 Cookie - 缓存键基于用户名生成
- 每次运行自动恢复和保存 Cookie
开始并发处理 N 个账户...
↓
[Worker-1] 处理账户 1
[Worker-2] 处理账户 2 (并发执行)
↓
收集失败账户
↓
等待 5-15 秒
↓
第 1 轮重试失败账户
↓
...
- 等待所有账户完成后统一重试
- 每轮重试间隔 5-15 秒随机时间
- 可配置最大重试次数
脚本支持自动更新功能,可以检测到新版本或版本过低时自动同步到最新版本。
- 发现新版本(
LATEST_VERSION > ver) - 版本过低(
ver < MIN_VERSION)
-
优先使用 Git 同步(如果系统已安装 Git)
- 执行
git fetch --all获取最新代码 - 执行
git reset --hard origin/main强制同步到最新版本
- 执行
-
Git 失败时回退到直接下载
- 从 GitHub 下载最新版本的
rainyun.py文件 - 覆盖当前文件
- 从 GitHub 下载最新版本的
-
下载失败时提示手动更新
- 显示更新地址,引导用户手动更新
通过环境变量 AUTO_UPDATE 控制:
# 启用自动更新(默认)
export AUTO_UPDATE=true
# 禁用自动更新
export AUTO_UPDATE=false或在 .env 文件中配置:
AUTO_UPDATE=true参考 Linux 环境配置指南。
- 网页加载缓慢,尝试延长超时等待时间
- 更换连接性更好的网络环境
- 确认 Chrome 浏览器版本与系统兼容
ICR 模块使用旋转分析和模板匹配算法,识别率较高。脚本会自动重试,多次尝试后通常能成功通过验证。
确保 Python 版本为 3.9+,使用以下命令安装依赖:
python -m pip install --upgrade pip
pip install -r requirements.txt如果遇到依赖冲突,可以尝试:
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt- 确保 Chrome 和 ChromeDriver 版本匹配
- 检查 GitHub Actions 日志中的错误信息
- 项目已优化 Chrome 选项配置,支持 headless 模式
项目已实现线程锁机制,确保 Chrome 实例按顺序初始化,避免端口冲突。
项目已集成 GitHub Actions 缓存功能,以加快每次运行的速度,主要缓存:
- Python 依赖
- Chrome 浏览器
- Cookie 缓存
- ✨ 新增随机浏览器指纹功能
- ✨ 新增 Cookie 缓存功能,支持免密登录
- ✨ 新增并发处理支持,可配置最大线程数
- ✨ 新增批量重试机制,等待所有账户完成后统一重试
- ✨ 新增页面加载超时处理和重试机制
- 🐛 修复 GitHub Actions 中 Chrome 初始化失败问题
- 🐛 修复多账户并发时的端口冲突问题
- 🐛 修复登录流程检测问题
- 📝 更新 GitHub Actions 工作流配置
- ✨ 新增云端版本配置
- ✨ 新增 ICR 验证码识别模块(旋转分析+模板匹配)
- ✨ 支持多账户签到
- ✨ 集成 7 种通知推送方式
- 🐛 修复 wait 变量作用域问题
- 🐛 修复 ChromeDriver 执行格式错误
- 🐛 修复依赖冲突问题
- 📝 更新 GitHub Actions 配置
欢迎提交 Issue 和 Pull Request 来改进本项目:
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启一个 Pull Request
本项目采用 GNU GENERAL PUBLIC LICENSE 许可证 - 查看 LICENSE 文件了解详情。
- 本工具仅用于学习和个人使用
- 使用本工具应遵守雨云官方的用户协议和相关规定
- 作者不对因使用本工具可能产生的任何后果负责
- SerendipityR-2022 - 项目初始版本
- Selenium - 自动化测试工具
- webdriver-manager - ChromeDriver 自动管理工具
- OpenCV - 开源计算机视觉库