基于 linux.do OAuth2 授权的多网站自动签到 Chrome 扩展,支持所有使用 New API 平台的站点。
- 自动 OAuth 登录:自动完成 linux.do OAuth2 授权流程
- 后台签到:完全后台执行,不打开可见窗口
- Badge 通知:扩展图标显示签到进度和结果
- 定时签到:每天 09:00 自动执行签到
- 站点管理:可视化添加、删除、启用/禁用站点
- 配置导入导出:支持站点配置的备份和迁移
- 缓存机制:认证信息缓存,减少重复登录
- Cloudflare 防护绕过:自动检测并绕过 Cloudflare Bot Management
- 下载或克隆本项目
- 打开 Chrome 浏览器,访问
chrome://extensions/ - 开启右上角的"开发者模式"
- 点击"加载已解压的扩展程序"
- 选择
chrome-extension文件夹
- 确保已在 linux.do 登录
- 点击扩展图标打开弹窗
- 点击"+ 添加站点"按钮
- 输入站点域名(如
example.com) - 点击"立即签到"测试
扩展会在每天 09:00 自动执行签到,无需手动操作。
- 签到中:显示进度(如 "1/3"、"2/3")
- 签到成功:绿色背景 + "✓"
- 有失败:红色背景 + "✗N"(N为失败数量)
- Badge 会在 5 秒后自动消失
- 启用/禁用:点击站点前的开关
- 删除站点:点击站点右侧的 "×" 按钮
- 查看状态:每个站点显示最近一次签到结果
- 导出:点击"导出配置"按钮,保存为 JSON 文件
- 导入:点击"导入配置"按钮,选择 JSON 文件
- 覆盖模式:替换所有现有站点
- 合并模式:只添加新站点,保留现有站点
所有使用 New API 平台且支持 linux.do OAuth 登录的站点。
添加新站点时,只需输入域名即可,扩展会自动配置签到接口。
- 在浏览器标签页中获取站点的
linuxdo_client_id(绕过 Cloudflare) - 在标签页中获取 OAuth
state参数(CSRF 保护) - 在同一标签页中打开 linux.do 授权页面
- 自动点击"允许"按钮
- 捕获回调 URL 中的
code参数 - 调用站点的 OAuth 回调 API 完成登录
- 验证 session 是否建立(检查 localStorage['user'])
- 导航到登录页并捕获认证请求头(Cookie + New-API-User)
- 验证认证头有效性
New API 平台使用两种认证方式:
- Session Cookie:服务端 session 认证
- New-API-User 请求头:从 localStorage['user'] 读取用户 ID
扩展会同时捕获这两种认证信息,确保签到请求成功。
- 认证头缓存在
chrome.storage.local中 - 每次签到前检查缓存是否有效
- 401 错误时自动重新登录并更新缓存
- Cloudflare 错误时自动重新登录并标记站点
扩展采用智能检测机制处理 Cloudflare Bot Management:
- 默认模式:优先使用 service worker 发起请求(速度快)
- 自动检测:当检测到 Cloudflare 拦截(返回 HTML 验证页面)时
- 自动切换:标记该站点并切换到浏览器标签页执行模式
- 持久化标记:标记保存在缓存中,后续签到直接使用标签页模式
- 绕过验证:在真实浏览器环境中执行请求,获取有效的 cf_clearance cookie
这种机制确保:
- 无 Cloudflare 防护的站点保持高速签到
- 有 Cloudflare 防护的站点自动绕过验证
- 无需手动配置,全自动识别和处理
- 确保已在 linux.do 登录
- 检查站点是否支持 linux.do OAuth
- 查看浏览器控制台日志(F12 → Console)
- 确保输入的是有效域名(如
example.com) - 不要包含
https://或路径 - 域名必须包含
.
- 在
chrome://extensions/重新加载扩展 - 检查扩展图标是否固定在工具栏
chrome-extension/
├── manifest.json # 扩展清单
├── background.js # 后台服务(OAuth、签到逻辑)
├── config.js # 配置文件(默认站点、全局配置)
├── popup.html # 弹窗界面
├── popup.js # 弹窗脚本(UI 交互)
└── icons/ # 扩展图标
├── icon16.png
├── icon48.png
└── icon128.png
编辑 config.js 中的 GLOBAL_CONFIG.autoSignTime:
const GLOBAL_CONFIG = {
autoSignTime: '09:00', // 修改为你想要的时间
// ...
};编辑 config.js 中的 DEFAULT_SITES:
const DEFAULT_SITES = [
{ domain: 'example.com', name: 'Example Site', enabled: true },
// 添加更多站点...
];- 打开
chrome://extensions/ - 找到扩展,点击"service worker"
- 在 DevTools 中查看日志
MIT License
欢迎提交 Issue 和 Pull Request。