基于 Python + Playwright 实现的自动签到脚本,支持 AnyRouter、AgentRouter 等多平台多账号自动签到保活。
核心突破:
- 🎭 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/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 配置
- AnyRouter - AI API 聚合平台
- AgentRouter - AI Coding 公益平台
-
Fork 本仓库
-
配置 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" } } ]
-
配置通知(推荐: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
- Name:
-
启用 Actions
进入
Actions→ 选择工作流 →Enable workflow -
(可选)配置额外选项
根据需要添加以下环境变量:
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# 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 定时配置
- 🔔 系统级通知支持
- 📱 支持移动端操作
快速集成步骤:
- 安装青龙面板(Docker 部署)
docker run -dit \
-v $PWD/ql/data:/ql/data \
-p 5700:5700 \
--name qinglong \
--restart unless-stopped \
whyour/qinglong:latest-
获取应用凭证
- 访问
http://localhost:5700 - 登录后进入 系统设置 → 应用设置
- 新建应用,记录 Client ID 和 Secret
- 访问
-
配置环境变量
在 .env 中添加:
QINGLONG_HOST=http://localhost:5700
QINGLONG_CLIENT_ID=your_client_id
QINGLONG_CLIENT_SECRET=your_client_secret- 运行集成脚本
python qinglong_setup.py脚本会自动:
- ✅ 同步账号配置到青龙面板环境变量
- ✅ 创建定时任务(可自定义 cron 表达式)
- ✅ 验证配置是否成功
📖 详细文档:青龙面板集成指南
💡 提示:集成后可在青龙面板 Web 界面中查看日志、手动触发任务、修改执行时间等。
本脚本支持四种认证方式,可以为同一账号配置多种认证方式作为备份:
优点:最快速,最稳定 缺点:Session 可能过期(通常1个月)
获取步骤:
-
获取 Session Cookie:
- 打开浏览器,访问网站并登录
- AnyRouter: 使用邮箱密码登录
- AgentRouter: 点击"使用 GitHub 继续"或"使用 LinuxDO 继续"
- 按 F12 打开开发者工具
- 切换到
Application→Cookies - 找到
session字段,复制其值
- 打开浏览器,访问网站并登录
-
获取 API User ID:
- 开发者工具切换到
Network标签 - 刷新页面或进行操作
- 找到任意 API 请求,查看请求头中的
New-Api-User字段值 - 或者查看控制台页面 URL 中的数字ID
- 开发者工具切换到
配置示例:
{
"name": "我的账号",
"provider": "anyrouter",
"cookies": {"session": "your_session_cookie"},
"api_user": "12345"
}优点:无需手动获取 Cookie,直接使用账号密码 缺点:依赖平台登录接口稳定性
适用平台:AnyRouter(支持邮箱密码直接登录)
配置示例:
{
"name": "邮箱登录",
"provider": "anyrouter",
"email": {
"username": "your@email.com",
"password": "your_password"
}
}优点:
- 自动获取和刷新 session
- 智能缓存机制(24小时有效)
- Cookie 过期自动重新认证
缺点:需要 GitHub 账号密码,首次登录可能需要 2FA
工作原理:
- 首次通过 OAuth 登录获取 session 和 api_user
- 自动保存到本地缓存(24小时有效)
- 后续签到直接使用 Cookies,跳过浏览器认证
- Cookie 过期时自动重新 OAuth 认证
配置示例:
{
"name": "GitHub登录",
"provider": "agentrouter",
"github": {
"username": "your_github_username",
"password": "your_github_password"
}
}优点:
- 自动获取和刷新 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"
}
}如果你有其他使用 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 | 否 |
*至少需要配置一种账号配置方式
代理功能完全可选:不配置代理相关的环境变量,脚本将正常运行不使用代理。
支持三种代理配置方式:
优点:
- 支持 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# 启用代理
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仅为特定认证方式启用代理(推荐用于 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 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/Email 认证后自动缓存 session
- ✅ Cookies 直接签到 - 缓存命中时跳过浏览器认证(性能提升 60%)
- ✅ 自动过期处理 - Cookie 失效时自动重新认证
- ✅ 统一缓存机制 - Email/GitHub/Linux.do 共享缓存逻辑
- ⚡ 签到速度:60% ↑(缓存命中时)
- 💾 浏览器启动:减少 100%(使用缓存时)
- 🔋 资源消耗:降低 70%(HTTP 请求替代浏览器)
- 新增
OAuthWithCookieFallback类支持智能降级 - 优化
_checkin_with_auth方法,优先使用缓存 - 完善
CookiesAuthenticator添加 cookies 验证逻辑
- ✅ 移除 SSL 验证禁用选项 - 强制启用 SSL,消除安全风险
- ✅ 统一日志系统 - 246 个 print() 调用替换为 logger
- ✅ 敏感信息保护 - 新增脱敏模块,自动保护密码和 Token
- ✅ 常量统一管理 - 创建 constants.py,减少 83 行重复代码
- ✅ 浏览器实例复用 - 性能提升 20-24%,资源优化 30-40%
- ✅ 异常处理优化 - 具体化所有异常类型
- ⚡ 执行速度提升:20-24%
- 💾 内存使用降低:15-24%
- 🔧 CPU 使用降低:30-40%
- 🚀 浏览器启动次数:减少 60-70%
- 🔧 修正 AgentRouter 404 错误
- 🔐 完整实现 GitHub 2FA 支持
- 🔄 添加智能重试机制
- 📝 统一日志系统
- 模块化架构
- 多认证方式支持
- Provider 抽象层
- 余额跟踪功能
- 页面超时错误 - 脚本已优化,支持多 URL fallback
- 401 认证失败 - 重新获取 session cookie
- WAF 拦截 - 脚本自动处理
- 通知未收到 - 检查配置,默认仅失败、首次运行或余额变化时通知
- Actions 未执行 - 启用工作流,注意延迟正常
- CI 环境 OAuth 认证失败 - 建议配置
CI_DISABLED_AUTH_METHODS=github,linux.do或改用 Cookies 认证
💡 提示: "签到成功" 表示账号登录有效,已完成保活操作!
-
账号安全
- 使用 GitHub Secrets 保护敏感信息
- 不要在代码中硬编码密码
- Session cookie 通常有效期 1 个月
-
使用频率
- 建议 6-24 小时执行一次
- 避免过于频繁导致账号异常
-
合规使用
- 仅用于个人账号保活
- 遵守平台服务条款
欢迎提交 Issue 和 Pull Request!
MIT License
本项目整合了以下项目的优秀特性:
- anyrouter-check-in - WAF绕过技术
- 社区贡献者的宝贵建议和反馈