-
为 多个 类似站点签到
-
基本普适
SSPANELPowered by SSPANEL 搭建的站点 -
可扩展为
Discuz!Powered by Discuz! 等的其他类型站点签到
-
引用
mmcvar mmc = await require(site_config.core); var res = await mmc(site_config, param_config, config = {});
-
mmc传入参数-
site_config: 网站配置-
site_config成员-
.corestring:地址 -
.domainstring[]:域名i.cat(https://) 和http(s)://i.dog均支持 -
.pathobject:路径i/cat(/) 和/i/dog均支持,且多个之间为逻辑或关系.log_instring[]:登录网址的.sign_instring[]:签到网址的
-
.keywordobject:关键字多个之间为
逻辑或关系,且优先级低于param_config中对应的选项.onlinestring[] -> regexp[]:在线的.signedstring[] -> regexp[] + optional:已签到的.signingstring[] -> regexp[] + optional:正签到的
-
.hookobject:钩子.get_log_inasync function (site, param){}:获取网址登录信息的siteobject:当前网站paramobject:脚本头中定义的参数
.post_sign_inasync function (site, param, data){}:推送网址签到信息的siteobject:当前网站paramobject:脚本头中定义的参数datastring:.get_log_in中的返回值
.notify_signedasync function (array){} + optional:自定义已经签到信息的arraystring[]:.keyword.signed中与.get_log_in中的返回值正则匹配成功后的数组
.notify_signingasync function (array){} + optional:自定义正在签到信息的arraystring[]:.keyword.signing中与.post_sign_in中的返回值正则匹配成功后的数组
.filter_unbefittingasync function (data){} + optional:过滤不适配的datastring:同.post_sign_in
-
site成员schemestring:协议domainstring:域名urlobject:URLgetstring:配合axios.get()使用poststring:配合axios.post()使用
-
optional表示
可选的 -
x -> y表示
x、y均支持,且x会默认转换为y -
(x)表示
x为省略的部分
-
-
例子
var sspanel = { core: "https://soulsign.inu1255.cn/script/Miao-Mico/mmc.js", // 地址 domain: [], // 域名 path: { log_in: ["auth/login"], // 登录网址主机的 sign_in: ["/user/checkin"], // 签到网址主机的 }, // 路径 keyword: { online: ["我的", "节点"], // 在线的 signed: [/明日再来/], // 已经签到的 }, // 关键词 hook: { get_log_in: async function (site, param) { /* 获取登录信息 */ return { code: 0, data: await axios.get(site.url.get) }; }, // 获取网址登录信息 post_sign_in: async function (site, param) { /* 推送签到信息 */ let data_psi = await axios.post(site.url.post); /* 返回信息 */ return { code: 0, data: data_psi.data.msg }; }, // 推送网址签到信息 notify_sign_in: async function (array) { /* 自定义 已签到 通知消息 */ return { code: 0, data: array }; }, // 通知网址签到信息 }, // 钩子 };
-
-
param_config: 调用者的脚本参数-
param_config可选成员-
domain:域名格式同
site_config.domain -
path_log_in:登录路径 -
path_sign_in:签到路径格式同
site_config.path中对应的选项 -
keyword_online:在线的关键字 -
keyword_signed:已签到的关键字 -
keyword_signing:正签到的关键字格式同
site_config.keyword中对应的选项
均使用
,分隔 -
-
例子
// ==UserScript== // ... // @grant require // @param domain 域名,<i.cat>,<http(s)://i.dog> // @param path_log_in 登录路径,<i/cat>,</i/dog> // @param path_sign_in 签到路径,<i/cat>,</i/dog> // @param keyword_online 在线关键字,</cat/>,<dog> // @param keyword_signed 已签到关键字,</cat/>,<dog> // @param keyword_filter 过滤正常消息关键字,</cat/>,<dog> // ... // ==/UserScript==
-
-
config= {}:配置-
dben = falsebool:是否开启debug模式dben = debug_enable
此时会记录和输出一些日志
-
ssvs = falsefunction:引入soulsign版本ssvs = soulsign_version
兼容旧版本
-
-
-
res成员-
res.about:关于- 返回 关于
-
res.debug(level = 0):调试信息- 返回 根据
level决定的部分或全部内部变量值
- 返回 根据
-
res.record_log(site, code, message):记录日志- 返回 参数
message
- 返回 参数
-
res.update_config(site_config, param_config)dev:更新配置- 无
-
res.publish_pipe(site, message):发布管道信息- 返回
message
- 返回
-
res.subscribe_pipe(site):订阅管道信息- 返回
res.publish_pipe(site, message)中的message
- 返回
-
res.sign_in(full_log = false):登录以下所列均为
soulsigh v2.1.0以下适用- full_log = true
- 成功:❤️ mmc ❤️ < [ ✔ 网站: 提示语] >
- 失败:❤️ mmc ❤️ < [ ❗ 网站: 问题] / [ ✔ 网站: 提示语] >
- full_log = false
- 成功:❤️ mmc ❤️
- 失败:❤️ mmc ❤️ < [ ❗ 网站: 问题] >
<...>,意为里面的内容是一个单元
- full_log = true
-
res.check_online():检测是否在线- 成功:
true - 失败:
false
- 成功:
-
-
例子
-
SSPANEL等的普适签到脚本 - 管理多个站点,需配置
@param domain或.domain - 管理检测关键词,需配置
@param keyword_xxx或.keyword.xxx - 分离核心脚本,应用脚本轻量化
- 多种网站签到方式,需配置
.hook.xxx - 每种网站签到方式可以自动匹配多个不同网址,需配置
@param path_xxx或.path.xxx - 每次调用脚本均刷新配置
- 多个网站域名设置,已支持泛域名
*,兼容考虑,仍未移除*.*&*.*.*&*.*.*.* - 自定义
已签到通知文字,需配置.hook.notify_sign_in和.keyword.signed为均有效 - 渲染、格式化
执行结果 - 处理
未登录时的多网站登录问题,需自行分别登录,点击执行结果进入日志页面,即可看到域名列表,点击域名栏可跳转登录 - 支持过滤是否未适配的网站,需配置
hook.filter_unbefitting - 筛选每种网站的
非敏感信息,用作反馈 - 完全使用
表驱动法重构,减少相似的表,缩减代码体积小声哔哔
-
增加
return.detail.log,会记录每次网络请求的响应数据每个域名下一般有 2 条响应数据,即
.hook.get_log_in()和.hook.post_sign_in()中的两次axios;我并不会收集你的数据;
如果需复制反馈,请 务必 做 脱敏处理,里面会包含你的 个人信息。
-
适配
*,泛域名 -
对于
关键字,优先匹配用户配置 -
增加
hook.notify_signing,个性化正在签到消息提示,使用关键字keyword.signing,可选 -
增加
hook.filter_unbefitting,过滤不适配的网站 -
修改
hook.post_sign_in,仅用于推送配置,然后返回响应数据 -
重命名,
filter->signing,notify_sign_in->notify_signed -
支持兼容不同
soulsign版本 -
修复异常无法抛出的问题
变更日志
- 重构
assert(),使用operate_table() - 改良
discuz.?.js,获取哈希值的办法 - 修改
match_keyword(),支持正/反性关键词 - 增加
.keyword.filter,可以过滤消息并设置为非警告级别 - 修复
discuz.k.js,消息提示问题
- 修复
网络连接中断时的异常情况
- 增加
discuz.dc&discuz.k - 支持
param_config.path_xxx¶m_config.keyword_signed - 重写
config_path(),用到了operate_table() - 默认
param_config可选项均加入应用脚本 - 修复
param_config.keyword_signed读取问题 - 修复
method_site()中多个path自动更新的规则问题,梅开二度? - 修复
notify_sign_in()的参数问题
- 支持
hook.notify_sign_in,可自定义已签到的通知消息 - 增加
operate_table()&operate_item(),表驱动 - 重写
config_xxx(),用到了operate_xxx() - 增加
时间戳,在system_log_core()中 - 修复
method_site()中多个path不自动轮转的问题 - 修复
nexusphp.js - 修改
match_keyword_list()为match_keyword()
- 增加
eval权限,便于模块化 - 增加
online / signed关键字,去除positive / negaitive关键字 - 增加
system_xxx(),一系列 - 增加
nexusphp.js - 重写
hook部分,用eval - 清空
site_config.domain,由于更新会覆写个人的配置,现需手动配置 - 增加
persistence_log(),读取持久化的消息,就是另一个缓存,很少更新 - 修改
record_log(),可选消息持久化 - 修复
method_site()中的error,现改为message,无法作用 - 修复
#1,判断是否已经签到关键词问题 - 增加
readme,在application目录中 - 增加
gitignore
- 移除
mmc.js内部对sspanel.js的集成,hook - 配置
sspanel.js的hook - 修复当
debugs.enable != true时,没有错误抛出
- 修复
@domain配置问题 - 修改
natfrp.js的提示信息,这个脚本可能暂时或永久失效,因为有了hCaptcha验证 - 修复部分变量名
- 修复多个脚本调用不会刷新配置,取消缓存的特性
- 修改了
site_config的格式 - 支持多个
path,即支持一种签到方式下的多种网址 - 修改文件目录
- 增加
about - 修改
assert_type() - 修改
view_log()&sign_in(),支持结果全输出 - 增加更多
system_log(),在debug运行时记录日志
- 增加
飘云阁.js - 增加
natfrp领流量.js - 证明可以
hook为其他类型签到,决定签到方式
- 修改了
site_config的格式 - 修复了更新
domain时,sites内索引不对的情况 - 改变部分
var为let,主要是函数内地局部变量 - 增加
update_config()dev,用来自动更新配置参数
- 支持在
hook中引入param - 支持
pipe,hook间相互通信 - 增加
asserts,支持适应不同参数列表,主要是有无 @param - 支持
configs,存储传入的参数,site_config¶m_config - 增加
debugs - 增加
system_log(),方便调试,record_log()也会调用它 - 增加
debug(),支持根据等级输出
- 支持
hook,可能能支持其他网站类型了
- 形成模板
- 修改‘域名’文本框提示的文本
- 修改‘登录后应该有的关键字’文本框提示的文本
- 支持配置多个域名
- 支持配置检查在线的关键字
1.1.0stable
- 修复检测在线的问题
- 发布脚本
所有给予灵感和帮助的人儿们