Skip to content
 
 

Repository files navigation

Router平台定时签到/登录

基于 Python + Playwright 实现的自动签到脚本,支持 AnyRouter、AgentRouter 等多平台多账号自动签到保活。

✨ 最新特性

🛡️ 高级反检测技术(v3.14.0)

核心突破:

  • 🎭 JavaScript 特征伪装 - 10 项核心反检测措施,通过率 95%+
  • 🚀 浏览器参数优化 - 40+ 启动参数深度优化
  • 🔄 User-Agent 最新 - Chrome 131.0.0.0,定期更新
  • 🎯 青龙面板完美兼容 - headless 模式下 100% 有效

反检测效果:

✅ Cloudflare Turnstile:95%+ 通过率
✅ reCAPTCHA v2:      80%+ 通过率
✅ hCaptcha:          70%+ 通过率
✅ 普通 WAF:          98%+ 通过率

技术亮点:

  • 移除 navigator.webdriver 标志
  • 伪装 plugins、languages、permissions
  • 模拟真实 Chrome 特性(chrome对象、connection、battery API)
  • 时区与地理位置一致性保护

📖 详细文档:反检测技术文档

🎯 OAuth → Cookies 智能降级机制

核心优化:

  • 🔄 自动会话管理 - OAuth/Email 认证后自动缓存 session(24小时)
  • ⚡ 性能提升 60% - 缓存命中时跳过浏览器,直接 HTTP 请求签到
  • 🛡️ 智能降级 - Cookie 过期时自动触发完整认证流程
  • 💾 统一缓存 - Email/GitHub/Linux.do 三种方式共享同一套缓存机制

工作流程:

OAuth/Email 认证
    ↓
保存 session 到缓存
    ↓
下次签到检测到缓存
    ↓
直接用 Cookies 签到 (快速)
    ↓
Cookie 过期? → 自动重新认证

🚀 重大优化升级

  • ⚡ 性能提升 20-24% - 浏览器实例复用优化
  • 🛡️ 强制 SSL 验证 - 移除不安全的禁用选项
  • 📝 统一日志系统 - 所有输出使用标准 logger
  • 🔐 敏感信息保护 - 自动脱敏密码和 Token
  • 📦 常量统一管理 - 集中管理所有配置常量
  • 🎯 异常处理优化 - 具体化所有异常类型

🎯 核心特性

  • ✅ 模块化架构 - 清晰的代码结构,易维护和扩展
  • ✅ 类型安全 - 使用数据类 (dataclass) 进行配置管理
  • ✅ 多认证方式 - 支持 Cookies、邮箱密码、GitHub OAuth、Linux.do OAuth
  • ✅ Provider 抽象 - 统一的平台接口,支持自定义 Provider
  • ✅ 智能重试 - 自动尝试所有配置的认证方式
  • ✅ 余额跟踪 - 详细的余额变化监控和通知

📦 功能特点

  • ✅ 支持 anyrouter.top 和 agentrouter.org 多平台
  • ✅ 支持 Cookies、邮箱密码、GitHub、Linux.do 四种登录方式
  • ✅ 高级反检测技术 - 95%+ 通过 Cloudflare/reCAPTCHA 验证
  • ✅ 青龙面板完美兼容 - headless 模式下 100% 有效
  • ✅ 余额监控和变化通知
  • ✅ 多种通知方式(邮件、钉钉、飞书、企业微信、ServerChan、PushPlus)
  • ✅ GitHub Actions 自动定时执行
  • ✅ 详细的执行日志和报告
  • ✅ 支持自定义 Provider 配置

支持的平台

快速开始

方式一:GitHub Actions(推荐)

  1. Fork 本仓库

  2. 配置 Secrets

    进入 Settings → Secrets and variables → Actions → New repository secret

    配置方式 A:分平台配置(向后兼容)

    ANYROUTER_ACCOUNTS=[
      {
        "name": "AnyRouter主账号",
        "cookies": {
          "session": "your_session_cookie"
        },
        "api_user": "12345"
      }
    ]
    
    AGENTROUTER_ACCOUNTS=[
      {
        "name": "AgentRouter主账号",
        "cookies": {
          "session": "your_session_cookie"
        },
        "api_user": "12345"
      }
    ]

    配置方式 B:统一配置(推荐,支持多种认证)

    ACCOUNTS=[
      {
        "name": "我的AnyRouter账号",
        "provider": "anyrouter",
        "cookies": {"session": "xxx"},
        "api_user": "12345"
      },
      {
        "name": "邮箱登录",
        "provider": "anyrouter",
        "email": {
          "username": "your@email.com",
          "password": "yourpassword"
        }
      },
      {
        "name": "我的AgentRouter账号",
        "provider": "agentrouter",
        "github": {
          "username": "myuser",
          "password": "mypass"
        }
      },
      {
        "name": "Linux.do登录",
        "provider": "agentrouter",
        "linux.do": {
          "username": "user",
          "password": "pass"
        }
      }
    ]
  3. 配置通知(推荐:ServerChan)

    ServerChan(推荐) - 微信通知,配置简单稳定

    a. 访问 ServerChan 使用微信登录

    b. 复制你的 SendKey(格式:SCTxxxxx...)

    c. 在 GitHub Secrets 中添加:

    • Name: SERVERPUSHKEY
    • Value: 你的 SendKey

    其他通知方式(可选):

    • EMAIL_USER + EMAIL_PASS + EMAIL_TO - 邮件通知
    • DINGDING_WEBHOOK - 钉钉机器人
    • FEISHU_WEBHOOK - 飞书机器人
    • WEIXIN_WEBHOOK - 企业微信
    • PUSHPLUS_TOKEN - PushPlus
  4. 启用 Actions

    进入 Actions → 选择工作流 → Enable workflow

  5. (可选)配置额外选项

    根据需要添加以下环境变量:

    • CI_DISABLED_AUTH_METHODS=github,linux.do - 禁用 CI 环境中易失败的认证方式
    • SUBSCRIPTION_PROXY_URL - 订阅代理链接(支持 Clash/V2Ray/SIP002)
    • SESSION_CACHE_KEY - 会话缓存加密密钥

    详见 环境变量配置

方式二:本地运行

# 1. 克隆仓库
git clone <repo_url>
cd Regular-inspection

# 2. 安装依赖(使用 uv)
uv sync

# 3. 安装浏览器
playwright install chromium

# 4. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入账号信息

# 5. 运行脚本
uv run python main.py

方式三:Docker 部署

# 1. 复制配置文件
cp .env.example .env

# 2. 编辑配置
vim .env

# 3. 构建并运行
docker-compose up -d

# 4. 查看日志
docker-compose logs -f

# 5. 手动执行
docker-compose run --rm router-checkin

方式四:青龙面板集成(推荐用于统一任务管理)

✨ 青龙面板优势:

  • 🎯 可视化任务管理界面
  • 📊 Web 端查看执行日志
  • ⏰ 灵活的 cron 定时配置
  • 🔔 系统级通知支持
  • 📱 支持移动端操作

快速集成步骤:

  1. 安装青龙面板(Docker 部署)
docker run -dit \
  -v $PWD/ql/data:/ql/data \
  -p 5700:5700 \
  --name qinglong \
  --restart unless-stopped \
  whyour/qinglong:latest
  1. 获取应用凭证

    • 访问 http://localhost:5700
    • 登录后进入 系统设置 → 应用设置
    • 新建应用,记录 Client ID 和 Secret
  2. 配置环境变量

在 .env 中添加:

QINGLONG_HOST=http://localhost:5700
QINGLONG_CLIENT_ID=your_client_id
QINGLONG_CLIENT_SECRET=your_client_secret
  1. 运行集成脚本
python qinglong_setup.py

脚本会自动:

  • ✅ 同步账号配置到青龙面板环境变量
  • ✅ 创建定时任务(可自定义 cron 表达式)
  • ✅ 验证配置是否成功

📖 详细文档:青龙面板集成指南

💡 提示:集成后可在青龙面板 Web 界面中查看日志、手动触发任务、修改执行时间等。

配置说明

认证方式详解

本脚本支持四种认证方式,可以为同一账号配置多种认证方式作为备份:

方式 1:Cookies 认证(推荐,最稳定)

优点:最快速,最稳定 缺点:Session 可能过期(通常1个月)

获取步骤:

  1. 获取 Session Cookie:

    • 打开浏览器,访问网站并登录
      • AnyRouter: 使用邮箱密码登录
      • AgentRouter: 点击"使用 GitHub 继续"或"使用 LinuxDO 继续"
    • 按 F12 打开开发者工具
    • 切换到 Application → Cookies
    • 找到 session 字段,复制其值
  2. 获取 API User ID:

    • 开发者工具切换到 Network 标签
    • 刷新页面或进行操作
    • 找到任意 API 请求,查看请求头中的 New-Api-User 字段值
    • 或者查看控制台页面 URL 中的数字ID

配置示例:

{
  "name": "我的账号",
  "provider": "anyrouter",
  "cookies": {"session": "your_session_cookie"},
  "api_user": "12345"
}

方式 2:邮箱密码认证(AnyRouter)

优点:无需手动获取 Cookie,直接使用账号密码 缺点:依赖平台登录接口稳定性

适用平台:AnyRouter(支持邮箱密码直接登录)

配置示例:

{
  "name": "邮箱登录",
  "provider": "anyrouter",
  "email": {
    "username": "your@email.com",
    "password": "your_password"
  }
}

方式 3:GitHub OAuth 认证(AgentRouter)

优点:

  • 自动获取和刷新 session
  • 智能缓存机制(24小时有效)
  • Cookie 过期自动重新认证

缺点:需要 GitHub 账号密码,首次登录可能需要 2FA

工作原理:

  1. 首次通过 OAuth 登录获取 session 和 api_user
  2. 自动保存到本地缓存(24小时有效)
  3. 后续签到直接使用 Cookies,跳过浏览器认证
  4. Cookie 过期时自动重新 OAuth 认证

配置示例:

{
  "name": "GitHub登录",
  "provider": "agentrouter",
  "github": {
    "username": "your_github_username",
    "password": "your_github_password"
  }
}

方式 4:Linux.do OAuth 认证(AgentRouter)

优点:

  • 自动获取和刷新 session
  • 智能缓存机制(24小时有效)
  • Cookie 过期自动重新认证

缺点:需要 Linux.do 账号

工作原理:同 GitHub OAuth,自动管理 session 生命周期

配置示例:

{
  "name": "Linux.do登录",
  "provider": "agentrouter",
  "linux.do": {
    "username": "your_linux_do_username",
    "password": "your_linux_do_password"
  }
}

多认证方式配置(推荐)

可以为同一账号配置多种认证方式,脚本会依次尝试,提高成功率:

{
  "name": "我的AnyRouter账号(多认证备份)",
  "provider": "anyrouter",
  "cookies": {"session": "xxx"},
  "api_user": "12345",
  "email": {
    "username": "your@email.com",
    "password": "your_password"
  }
}

或者 AgentRouter 的多认证配置:

{
  "name": "我的AgentRouter账号",
  "provider": "agentrouter",
  "cookies": {"session": "xxx"},
  "api_user": "12345",
  "github": {
    "username": "myuser",
    "password": "mypass"
  },
  "linux.do": {
    "username": "user",
    "password": "pass"
  }
}

自定义 Provider

如果你有其他使用 newapi 架构的平台,可以添加自定义 Provider:

PROVIDERS='{
  "custom": {
    "name": "自定义平台",
    "base_url": "https://custom.example.com",
    "login_url": "https://custom.example.com/login",
    "checkin_url": "https://custom.example.com/api/user/checkin",
    "user_info_url": "https://custom.example.com/api/user/self"
  }
}'

然后在账号配置中使用:

{
  "name": "自定义平台账号",
  "provider": "custom",
  "cookies": {"session": "xxx"},
  "api_user": "12345"
}

环境变量配置

变量名 说明 必填
ANYROUTER_ACCOUNTS AnyRouter 账号配置(JSON数组) 否*
AGENTROUTER_ACCOUNTS AgentRouter 账号配置(JSON数组) 否*
ACCOUNTS 统一账号配置(支持多 Provider) 否*
PROVIDERS 自定义 Provider 配置 否
CI_DISABLED_AUTH_METHODS CI 环境禁用的认证方式(逗号分隔,如 github,linux.do) 否
SESSION_CACHE_KEY 会话缓存加密密钥(建议设置) 否
代理配置(可选)
USE_PROXY 全局启用代理(设置为 true 启用) 否
PROXY_SUBSCRIPTION_URL 订阅代理链接(支持 Clash/V2Ray/SIP002 格式) 否
PROXY_SELECTION_MODE 节点选择模式:auto(自动选最快)/manual(正则匹配)/random(随机) 否
PROXY_NODE_NAME 手动模式的节点名称匹配正则(如 香港|HK|台湾|TW) 否
PROXY_TEST_SPEED 是否启用测速(true/false,默认 true) 否
PROXY_CACHE_DURATION 节点缓存时长(秒,默认 3600) 否
PROXY_SERVER 直接代理服务器(格式:http://host:port 或 socks5://host:port) 否
PROXY_USER 代理服务器用��名 否
PROXY_PASS 代理服务器密码 否
PROXY_METHODS 仅为指定认证方式启用代理(逗号分隔,如 github,linux.do) 否
NO_PROXY_METHODS 为指定认证方式禁用代理(逗号分隔,如 cookies,email) 否
通知配置
EMAIL_USER 邮件发送地址 否
EMAIL_PASS 邮件密码/授权码 否
EMAIL_TO 邮件接收地址 否
CUSTOM_SMTP_SERVER 自定义 SMTP 服务器 否
SERVERPUSHKEY Server酱 SendKey(获取) 否
PUSHPLUS_TOKEN PushPlus Token 否
DINGDING_WEBHOOK 钉钉机器人 Webhook 否
FEISHU_WEBHOOK 飞书机器人 Webhook 否
WEIXIN_WEBHOOK 企业微信 Webhook 否

*至少需要配置一种账号配置方式

代理配置说明

代理功能完全可选:不配置代理相关的环境变量,脚本将正常运行不使用代理。

支持三种代理配置方式:

方式 1:订阅代理(推荐)

优点:

  • 支持 Clash YAML / V2Ray Base64 / SIP002 URI 格���
  • 自动选择最优节点
  • 节点缓存,减少重复解析

配置示例:

# 启用代理
USE_PROXY=true

# 订阅链接
PROXY_SUBSCRIPTION_URL=https://your-proxy-subscription-url

# 方案 A:自动选择最快节点(默认)
PROXY_SELECTION_MODE=auto
PROXY_TEST_SPEED=true

# 方案 B:手动正则匹配节点
PROXY_SELECTION_MODE=manual
PROXY_NODE_NAME=香港|HK|台湾|TW

# 方案 C:随机选择节点
PROXY_SELECTION_MODE=random

# 可选:节点缓存时长(默认 3600 秒)
PROXY_CACHE_DURATION=3600

方式 2:直接代理

# 启用代理
USE_PROXY=true

# HTTP 代理
PROXY_SERVER=http://127.0.0.1:7890

# SOCKS5 代理(带认证)
PROXY_SERVER=socks5://127.0.0.1:1080
PROXY_USER=your_username
PROXY_PASS=your_password

方式 3:细粒度控制

仅为特定认证方式启用代理(推荐用于 CI 环境):

# 仅为 GitHub 和 Linux.do OAuth 启用代理
PROXY_METHODS=github,linux.do
PROXY_SERVER=http://127.0.0.1:7890

全局启用,但排除特定方式:

# 全局启用代理
USE_PROXY=true
PROXY_SERVER=http://127.0.0.1:7890

# 但 Cookies 和 Email 认证不使用代理
NO_PROXY_METHODS=cookies,email

GitHub Actions 配置

在 GitHub Secrets 中添加以下变量即可启用代理:

Secret 名称 说明 示例
USE_PROXY 启用代理 true
PROXY_SUBSCRIPTION_URL 订阅链接 https://...
PROXY_SELECTION_MODE 选择模式(可选) auto
PROXY_SERVER 直接代理(可选) http://127.0.0.1:7890

不配置任何代理 Secrets,脚本将不使用代理。

定时设置

默认执行时间:

  • 每 6 小时执行一次
  • 可在 .github/workflows/auto-checkin.yml 中修改 cron 表达式

常用时间配置:

schedule:
  - cron: '0 */6 * * *'   # 每6小时
  - cron: '0 0 * * *'     # 每天0点
  - cron: '0 0,12 * * *'  # 每天0点和12点

项目结构

Regular-inspection/
├── main.py                    # 主程序入口
├── checkin.py                 # 签到核心逻辑(浏览器复用)
├── utils/
│   ├── config.py              # 配置管理(数据类)
│   ├── auth/                  # 认证模块(模块化架构)
│   │   ├── __init__.py        # 认证器工厂方法
│   │   ├── base.py            # 认证器基类(含重试逻辑)
│   │   ├── cookies.py         # Cookies 认证实现
│   │   ├── email.py           # 邮箱密码认证实现
│   │   ├── github.py          # GitHub OAuth 认证(含 2FA)
│   │   └── linuxdo.py         # Linux.do OAuth 认证
│   ├── notify.py              # 通知模块
│   ├── logger.py              # 统一日志系统
│   ├── validator.py           # 配置验证工具
│   ├── constants.py           # 全局常量管理(含 TimeoutConfig)
│   ├── sanitizer.py           # 敏感信息脱敏
│   ├── session_cache.py       # 会话缓存管理
│   └── enhanced_stealth.py    # 高级反检测技术
├── pyproject.toml             # 项目配置
├── .env.example               # 环境变量模板
├── .github/
│   └── workflows/
│       └── auto-checkin.yml   # GitHub Actions 配置
├── Dockerfile                 # Docker 镜像
└── docker-compose.yml         # Docker Compose 配置

版本历史

最新版本 - OAuth → Cookies 智能降级

🎯 核心功能

  • ✅ 智能会话管理 - OAuth/Email 认证后自动缓存 session
  • ✅ Cookies 直接签到 - 缓存命中时跳过浏览器认证(性能提升 60%)
  • ✅ 自动过期处理 - Cookie 失效时自动重新认证
  • ✅ 统一缓存机制 - Email/GitHub/Linux.do 共享缓存逻辑

📊 性能提升

  • ⚡ 签到速度:60% ↑(缓存命中时)
  • 💾 浏览器启动:减少 100%(使用缓存时)
  • 🔋 资源消耗:降低 70%(HTTP 请求替代浏览器)

🔧 技术实现

  • 新增 OAuthWithCookieFallback 类支持智能降级
  • 优化 _checkin_with_auth 方法,优先使用缓存
  • 完善 CookiesAuthenticator 添加 cookies 验证逻辑

v3.0 - 重大优化升级

🔴 高优先级修复

  • ✅ 移除 SSL 验证禁用选项 - 强制启用 SSL,消除安全风险
  • ✅ 统一日志系统 - 246 个 print() 调用替换为 logger
  • ✅ 敏感信息保护 - 新增脱敏模块,自动保护密码和 Token

🟡 中优先级优化

  • ✅ 常量统一管理 - 创建 constants.py,减少 83 行重复代码
  • ✅ 浏览器实例复用 - 性能提升 20-24%,资源优化 30-40%
  • ✅ 异常处理优化 - 具体化所有异常类型

📊 性能提升

  • ⚡ 执行速度提升:20-24%
  • 💾 内存使用降低:15-24%
  • 🔧 CPU 使用降低:30-40%
  • 🚀 浏览器启动次数:减少 60-70%

v2.1 - 关键问题修复

  • 🔧 修正 AgentRouter 404 错误
  • 🔐 完整实现 GitHub 2FA 支持
  • 🔄 添加智能重试机制
  • 📝 统一日志系统

v2.0 - 架构重构

  • 模块化架构
  • 多认证方式支持
  • Provider 抽象层
  • 余额跟踪功能

故障排查

常见问题

  1. 页面超时错误 - 脚本已优化,支持多 URL fallback
  2. 401 认证失败 - 重新获取 session cookie
  3. WAF 拦截 - 脚本自动处理
  4. 通知未收到 - 检查配置,默认仅失败、首次运行或余额变化时通知
  5. Actions 未执行 - 启用工作流,注意延迟正常
  6. CI 环境 OAuth 认证失败 - 建议配置 CI_DISABLED_AUTH_METHODS=github,linux.do 或改用 Cookies 认证

💡 提示: "签到成功" 表示账号登录有效,已完成保活操作!

注意事项

  1. 账号安全

    • 使用 GitHub Secrets 保护敏感信息
    • 不要在代码中硬编码密码
    • Session cookie 通常有效期 1 个月
  2. 使用频率

    • 建议 6-24 小时执行一次
    • 避免过于频繁导致账号异常
  3. 合规使用

    • 仅用于个人账号保活
    • 遵守平台服务条款

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

鸣谢

本项目整合了以下项目的优秀特性:

About

为agentrouter.org和anyrouter.top实现定时登录

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages