logo
0
0
WeChat Login
refactor: 移除代理功能并优化账户处理逻辑

Rainyun-Qiandao-V2 (Selenium)

GitHub Workflow Status Python Version License GitHub Stars GitHub Forks

Star 历史

Star History Chart

项目概述

Rainyun-Qiandao-V2 是一个基于 Selenium 和 ICR(Image Captcha Recognition)的雨云自动签到工具,通过模拟浏览器操作和高级验证码识别,实现雨云账户的自动每日签到以赚取积分。

功能特性

Features

核心功能

  • ✅ 自动完成雨云账户登录
  • ✅ 使用 ICR 模块进行验证码自动识别(旋转分析+模板匹配)
  • ✅ 支持自定义随机延时(5-20秒),避免被系统识别为自动化脚本
  • ✅ 支持在本地环境和 GitHub Actions 中运行
  • ✅ 集成 webdriver-manager 自动匹配 ChromeDriver
  • ✅ 详细的日志记录,便于排查问题

多账户支持

  • ✅ 支持多账户签到,每个账户独立运行,互不干扰
  • ✅ 支持并发处理,可配置最大并发线程数
  • ✅ 批量重试机制,等待所有账户完成后统一重试失败账户
  • ✅ 账户处理间隔 5-15 秒随机延时

浏览器指纹

  • ✅ 随机浏览器指纹(User-Agent、分辨率、语言、时区)
  • ✅ 每个账户使用独立的随机指纹

Cookie 缓存

  • ✅ Cookie 缓存功能,支持免密登录
  • ✅ GitHub Actions 缓存支持,持久化 Cookie

通知推送

  • ✅ 支持统一通知,汇总所有账户签到结果
  • ✅ 支持7种通知推送方式(Push+、SMTP、Bark、钉钉、飞书、Telegram、Server酱)

自动更新

  • ✅ 支持自动更新功能,检测到新版本或版本过低时自动同步

技术栈

Python Selenium OpenCV Chrome

  • Python 3.9+
  • Selenium WebDriver 4.27+
  • ICR 验证码识别模块(旋转分析+模板匹配)
  • OpenCV 图像处理
  • Google Chrome 浏览器

安装步骤

1. 环境要求

Requirements

  • Python 3.9 或更高版本
  • Google Chrome 浏览器

2. 克隆项目

git clone https://github.com/scfcn/Rainyun-Qiandao.git cd Rainyun-Qiandao

3. 安装依赖

python -m pip install --upgrade pip pip install -r requirements.txt

4. 配置 ChromeDriver

本项目已集成自动匹配 ChromeDriver 的功能,无需手动下载和配置。工具将按以下顺序尝试:

  1. 使用 webdriver-manager 自动安装匹配的 ChromeDriver
  2. 使用系统路径中的 ChromeDriver
  3. 尝试常见的备用路径

使用方法

本地运行

方法一:通过环境变量配置

单账户配置
# 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 文件配置(推荐)

创建 .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

使用 GitHub Actions 自动签到

GitHub Actions

  1. Fork 本仓库
  2. 进入仓库的 Settings > Secrets and variables > Actions
  3. 添加以下密钥:
Secret名称说明必需
RAINYUN_USER雨云用户名(支持多行,每行一个用户名)
RAINYUN_PASS雨云密码(支持多行,每行一个密码,需与用户名数量匹配)
  1. 可选的通知推送配置:
Secret名称说明推送方式
PUSH_PLUS_TOKENPush+用户令牌微信
PUSH_PLUS_USERPush+群组编码(可选)微信
SMTP_SERVERSMTP服务器地址邮件
SMTP_SSL是否使用SSL (true/false)邮件
SMTP_EMAIL邮箱地址邮件
SMTP_PASSWORD邮箱密码邮件
SMTP_NAME发件人姓名邮件
BARK_PUSHBark设备码或完整URLiOS
DD_BOT_SECRET钉钉机器人密钥钉钉
DD_BOT_TOKEN钉钉机器人令牌钉钉
FSKEY飞书Webhook密钥飞书
TG_BOT_TOKENTelegram机器人令牌Telegram
TG_USER_IDTelegram用户IDTelegram
PUSH_KEYServer酱密钥Server酱
  1. 工作流将每天 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 缓存功能

本地缓存

  • Cookie 保存在 cookies/ 目录
  • 每个账户使用独立的 Cookie 文件(基于用户名哈希)
  • 支持 7 天免登录

GitHub Actions 缓存

  • 使用 actions/cache 持久化 Cookie
  • 缓存键基于用户名生成
  • 每次运行自动恢复和保存 Cookie

并发与重试机制

并发处理

开始并发处理 N 个账户... ↓ [Worker-1] 处理账户 1 [Worker-2] 处理账户 2 (并发执行) ↓ 收集失败账户 ↓ 等待 5-15 秒 ↓ 第 1 轮重试失败账户 ↓ ...

重试策略

  • 等待所有账户完成后统一重试
  • 每轮重试间隔 5-15 秒随机时间
  • 可配置最大重试次数

自动更新功能

脚本支持自动更新功能,可以检测到新版本或版本过低时自动同步到最新版本。

更新触发条件

  • 发现新版本(LATEST_VERSION > ver
  • 版本过低(ver < MIN_VERSION

更新方式

  1. 优先使用 Git 同步(如果系统已安装 Git)

    • 执行 git fetch --all 获取最新代码
    • 执行 git reset --hard origin/main 强制同步到最新版本
  2. Git 失败时回退到直接下载

    • 从 GitHub 下载最新版本的 rainyun.py 文件
    • 覆盖当前文件
  3. 下载失败时提示手动更新

    • 显示更新地址,引导用户手动更新

配置方式

通过环境变量 AUTO_UPDATE 控制:

# 启用自动更新(默认) export AUTO_UPDATE=true # 禁用自动更新 export AUTO_UPDATE=false

或在 .env 文件中配置:

AUTO_UPDATE=true

常见问题

1. Linux 系统怎么使用?

参考 Linux 环境配置指南

2. 找不到元素或等待超时,报错 NoSuchElementException/TimeoutException

  • 网页加载缓慢,尝试延长超时等待时间
  • 更换连接性更好的网络环境
  • 确认 Chrome 浏览器版本与系统兼容

3. 验证码识别失败

ICR 模块使用旋转分析和模板匹配算法,识别率较高。脚本会自动重试,多次尝试后通常能成功通过验证。

4. 依赖安装失败

确保 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

5. GitHub Actions 中 Chrome 初始化失败

  • 确保 Chrome 和 ChromeDriver 版本匹配
  • 检查 GitHub Actions 日志中的错误信息
  • 项目已优化 Chrome 选项配置,支持 headless 模式

6. 多账户并发时出现端口冲突

项目已实现线程锁机制,确保 Chrome 实例按顺序初始化,避免端口冲突。

GitHub Actions 优化

项目已集成 GitHub Actions 缓存功能,以加快每次运行的速度,主要缓存:

  • Python 依赖
  • Chrome 浏览器
  • Cookie 缓存

版本历史

v2.5 (2026-02-23)

  • ✨ 新增随机浏览器指纹功能
  • ✨ 新增 Cookie 缓存功能,支持免密登录
  • ✨ 新增并发处理支持,可配置最大线程数
  • ✨ 新增批量重试机制,等待所有账户完成后统一重试
  • ✨ 新增页面加载超时处理和重试机制
  • 🐛 修复 GitHub Actions 中 Chrome 初始化失败问题
  • 🐛 修复多账户并发时的端口冲突问题
  • 🐛 修复登录流程检测问题
  • 📝 更新 GitHub Actions 工作流配置

v2.4 (2026-02-12)

  • ✨ 新增云端版本配置

v2.3 (2026-02-11)

  • ✨ 新增 ICR 验证码识别模块(旋转分析+模板匹配)
  • ✨ 支持多账户签到
  • ✨ 集成 7 种通知推送方式
  • 🐛 修复 wait 变量作用域问题
  • 🐛 修复 ChromeDriver 执行格式错误
  • 🐛 修复依赖冲突问题
  • 📝 更新 GitHub Actions 配置

贡献指南

欢迎提交 Issue 和 Pull Request 来改进本项目:

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 开启一个 Pull Request

许可证

License

本项目采用 GNU GENERAL PUBLIC LICENSE 许可证 - 查看 LICENSE 文件了解详情。

免责声明

  • 本工具仅用于学习和个人使用
  • 使用本工具应遵守雨云官方的用户协议和相关规定
  • 作者不对因使用本工具可能产生的任何后果负责

鸣谢


GitHub last commit GitHub issues GitHub closed issues