BlogsClub 签到助手
BlogsClub 签到助手是一个用户脚本,用于后台检查 BlogsClub 每日签到状态,在需要时提醒你,并在你完成 Geetest 验证码后提交签到。
脚本不会自动识别、绕过或代替你完成验证码,验证码必须由你手动完成。
开源地址:HowieHz/howiehz-misc
功能特点
- 后台检查签到状态:按配置周期检查当天是否已经签到,并在需要时通知你。
- 手动签到:从用户脚本菜单立即检查;未签到时打开验证码,完成后提交签到。
- 零点抢签到:可在服务端零点前准备验证码,并在校准后的服务端零点后提交。
- 签到排名:签到成功后读取今日排名并在通知中显示。
- 服务端时钟校准:从 HTTP
Date响应头估算 BlogsClub 服务端与本机的时间差。 - 减少重复请求:复用有效会话和当前页面内正在进行的请求,不缓存已完成的结果。
- 多语言界面:菜单和通知支持英文、简体中文、繁體中文;首次加载时按浏览器语言偏好选择并保存。
支持的脚本引擎
支持 Tampermonkey、Violentmonkey、Greasemonkey、ScriptCat 等脚本引擎。
快速开始
- 安装支持的脚本引擎。
- 从 GitHub 直链安装用户脚本,或从 Greasy Fork 安装。
- 打开
https://www.blogsclub.org/或其他 BlogsClub 页面。 - 打开用户脚本管理器菜单,选择
BlogsClub 账号:未设置。 - 输入 BlogsClub 邮箱和密码。
- 账号状态先显示
已保存;完成一次成功的状态检查或登录后显示已登录。 - 需要立即检查时,选择
立即检查/签到。
默认配置只在 BlogsClub 页面自动检查状态;立即检查/签到 不受该限制,可在其他匹配页面手动执行。
菜单与配置
| 菜单项 | 默认值 | 作用 |
|---|---|---|
立即检查/签到 | — | 立即查询状态。未签到时打开验证码并允许手动签到。 |
BlogsClub 账号:... | 未设置 | 保存或更新邮箱和密码。 |
检查周期:1000 毫秒 | 1 秒 | 设置后台轮询间隔,即一次检查请求结束后等待多久再发送下一个请求;范围为 1 毫秒至 24 小时。 |
仅在 BlogsClub 页面自动检查状态:启用 | 启用 | 仅限制后台轮询和零点抢签到;手动立即检查不受页面限制。 |
可签到时自动验证码弹窗:启用 | 启用 | 普通轮询发现未签到时,是否自动打开验证码。 |
零点抢签到模式:启用 | 启用 | 是否启用零点前准备验证码、零点后提交的流程。 |
抢签到提前加载验证码:5 秒 | 5 秒 | 设置在服务端零点前多久开始准备验证码;范围为 1 至 60 秒。 |
抢签到提交延迟:500 毫秒 | 500 毫秒 | 设置服务端零点后首次提交的延迟;范围为 0 至 60000 毫秒。 |
抢签到提交重试次数:50 次 | 50 次 | 尚未收到成功响应时最多再提交的次数;范围为 0 至 JavaScript 最大安全整数。 |
抢签到提交重试间隔:200 毫秒 | 200 毫秒 | 设置每次重试启动的间隔,不等待前一个请求返回;范围为 1 至 60000 毫秒。 |
重试次数较大且间隔较短时,可能在短时间内发起大量并发请求,请根据站点限流能力谨慎设置。
切换语言
菜单最后一项 🌐 切换语言 会打开一个输入框:输入 1 选择英文,输入 2 选择简体中文,输入 3 选择繁体中文。首次加载时,脚本会根据浏览器语言偏好选择语言并保存;之后以保存的选择为准。
账号状态
未设置:没有完整保存邮箱和密码。已保存:凭据已写入用户脚本管理器本地存储,但尚未代表密码验证成功。已登录:最近一次状态检查或登录成功。登录失败:最近一次需要登录的请求失败,常见原因是密码错误、会话失效或网络问题。
密码只保存到用户脚本管理器的本地存储中。脚本不会把密码发送到验证码服务;密码登录请求只发送到 BlogsClub 登录接口。
普通模式
普通模式和零点抢签到模式默认启用。
后台轮询
脚本按配置周期调用签到状态接口。已有有效会话时,通常只发送一次 signinStatus 请求;会话失效或凭据刚变更时,才执行登录流程并再次查询状态。
后台发现已签到时通常不弹通知。后台发现未签到时,每个自然日最多通知一次;如果开启自动验证码弹窗,会同时打开验证码。
轮询计时器在上一轮检查完成后再安排下一轮,因此网络请求较慢时,下一轮时间会相应后移。把周期设得过短会增加请求数量,也可能触发站点限流。
手动检查
点击 立即检查/签到 后会立即显示 检查签到状态中……。
- 账号状态为
已登录时,优先复用或发送signinStatus,不会无条件重新登录; - 会话失效时,自动执行登录、状态查询;
- 凭据刚保存或状态为
登录失败时,会验证保存的邮箱和密码; - 发现未签到后打开验证码;
- 验证完成后立即发送签到请求。
签到成功通知包含耗时。之后脚本并行查询排名接口和用户中心页面,尽量显示今日排名;排名查询失败不会撤销已经提交的签到。
零点抢签到模式
零点抢签到模式独立于“可签到时自动验证码弹窗”开关。即使自动验证码弹窗关闭,只要抢签到模式开启并满足页面限制,脚本仍会准备验证码。
流程如下:
- 请求 BlogsClub 登录页,读取 HTTP
Date,估算服务端与本机的时钟差。 - 根据校准后的时间安排下一次服务端零点。
- 按“抢签到提前加载验证码”配置的时间(默认零点前 5 秒),同时启动 Geetest 组件加载和
signinStatus检查。 - 检查结果确认登录流程后,显示验证码。零点前的状态属于前一天时,不会用它跳过新一天的签到。
- 用户在零点前完成验证码时,脚本暂存验证结果。
- 到达校准后的服务端零点后按“抢签到提交延迟”配置发送第一次
action=signin。 - 尚未收到成功响应时,按“抢签到提交重试间隔”继续发送,最多重试配置的次数;不等待前一个请求返回,任一次响应确认签到成功后立即停止后续重试。
- 如果用户完成验证码时已经过了目标提交时间,则立即开始第一次提交,不再等待精确时刻。
定时器使用“当前服务端时间已经达到目标时间”的判断。浏览器后台节流、系统休眠或网络延迟导致定时器晚触发时,不要求命中某个精确毫秒。
抢签到模式只在配置的次数和时间范围内重试提交。多个请求可能同时处于进行中;收到成功响应后不会再发起新的请求,但已经发出的请求无法撤回。
如果另一个标签页或其他客户端在抢签到过程中已经完成签到,当前标签页仍可能提交一次,服务器可能返回“已签到”或类似提示。这是因为抢签到在真正提交前不会再额外查询一次状态。
API 与网络请求
脚本使用以下 BlogsClub 接口:
| 请求 | 用途 |
|---|---|
GET https://www.blogsclub.org/login.html | 获取登录 token,并读取 HTTP Date 进行时钟校准。 |
POST /index.php/getLogin | 使用保存的邮箱和密码登录。 |
POST /index.php/getProfile, action=signinStatus | 查询当日签到状态。 |
POST /index.php/getProfile, action=signin | 提交 Geetest 验证结果并签到。 |
POST /index.php/getProfile, action=signinRank | 查询今日签到排名数据。 |
GET /usercenter.html | 读取当前用户 blog_id,用于匹配排名。 |
这些请求都能在浏览器开发者工具的 Network 面板中看到。Geetest 组件还会向 static.geetest.com 发起自己的验证请求。
同一个页面内,脚本只复用“正在进行中的”登录页请求和签到状态请求;请求完成后立即清除,不缓存旧状态,也不在标签页之间共享。
权限与本地数据
脚本声明的用户脚本权限包括:
GM_xmlhttpRequest:跨域访问 BlogsClub 和 Geetest 资源;GM_getValue、GM_setValue:保存账号、设置和每日通知状态;GM_registerMenuCommand、GM_unregisterMenuCommand:注册用户脚本菜单;GM_notification:发送用户脚本管理器或系统通知;unsafeWindow:访问页面中的 Geetest 初始化函数。
GM_notification 的具体外观由用户脚本管理器和操作系统决定,不由脚本完全控制。
脚本使用非匿名请求并沿用 BlogsClub 会话 Cookie。卸载脚本前,如需彻底删除账号信息,请在用户脚本管理器中清理该脚本的存储数据。
影响与已知限制
- 默认只在 BlogsClub 页面自动检查状态;脚本仍会匹配其他网页,以便提供菜单和手动检查。
- 多个 BlogsClub 标签页各自拥有轮询和抢签到计时器,目前没有跨标签页主标签页锁。多个标签页可能同时弹出验证码,并各自发起配置的提交重试序列。
- 关闭“仅在 BlogsClub 页面自动检查状态”后,所有匹配网页都可能发起轮询和抢签到流程。
- 抢签到使用 HTTP
Date校准时钟,但 HTTP 日期通常只有秒级精度,提交延迟配置是近似目标,不是服务器保证的硬实时定时。 - 时钟偏移校正不会从 HTTP
Date自动推断业务时区;零点日历使用脚本运行环境的本地时区。若浏览器时区与 BlogsClub 业务时区不同,抢签到时间可能偏移。 - 验证码仍需人工完成。验证码过期、验证失败或组件加载失败时,需要重新打开并完成验证。
- 排名接口通常只提供有限名次数据;用户不在返回范围内时会提示未进入前 20 名,排名接口失败不会影响签到请求本身。
- 用户脚本管理器、浏览器、系统休眠、网络质量和站点限流都会影响检查时机。
故障排查
一直显示“已保存”
已保存 只表示凭据已经写入本地,不表示密码验证成功。点击 立即检查/签到,查看是否变为 已登录 或 登录失败。
没有弹出验证码
自动验证码弹窗和抢签到受“仅在 BlogsClub 页面自动检查状态”限制;手动点击 立即检查/签到 不受页面限制。抢签到模式还需要等待“抢签到提前加载验证码”配置的准备点。
看到多个验证码窗口
通常是多个 BlogsClub 标签页同时运行。关闭不需要的标签页,或暂时关闭抢签到模式。
开发者工具中没有请求
默认限制开启时,普通网页不会自动发送 BlogsClub 检查请求;手动点击 立即检查/签到 仍会发送。请在 BlogsClub 页面查看自动请求,或关闭“仅在 BlogsClub 页面自动检查状态”。
隐私与安全提示
本脚本会保存 BlogsClub 登录邮箱和密码,并使用它们执行自动登录。安装前请确认脚本来源可信,并确认自己接受将凭据用于 BlogsClub 登录接口。不要把包含本地凭据的用户脚本管理器配置目录上传或分享给他人。