/sspanel.soulsign

May a happy script, based on Soul Sign.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

SSPANEL - Soul Sign Script

功能

  • 多个 类似站点签到

  • 基本普适 SSPANELPowered by SSPANEL 搭建的站点

  • 可扩展为 Discuz!Powered by Discuz! 等的 其他类型站点 签到

介绍

  • 引用 mmc

    var mmc = await require(site_config.core);
    var res = await mmc(site_config, param_config, config = {});
  • mmc 传入参数

    • site_config: 网站配置

      • site_config 成员

        1. .corestring:地址

        2. .domainstring[]:域名

          i.cat(https://)http(s)://i.dog 均支持

        3. .pathobject:路径

          i/cat(/)/i/dog 均支持,且多个之间为 逻辑或 关系

          • .log_instring[]:登录网址的
          • .sign_instring[]:签到网址的
        4. .keywordobject:关键字

          多个之间为 逻辑或 关系,且优先级低于 param_config 中对应的选项

          • .onlinestring[] -> regexp[]:在线的
          • .signedstring[] -> regexp[] + optional:已签到的
          • .signingstring[] -> regexp[] + optional:正签到的
        5. .hookobject:钩子

          • .get_log_inasync function (site, param){}:获取网址登录信息的
            1. siteobject:当前网站
            2. paramobject:脚本头中定义的参数
          • .post_sign_inasync function (site, param, data){}:推送网址签到信息的
            1. siteobject:当前网站
            2. paramobject:脚本头中定义的参数
            3. datastring.get_log_in 中的返回值
          • .notify_signedasync function (array){} + optional:自定义已经签到信息的
            1. arraystring[].keyword.signed 中与 .get_log_in 中的返回值 正则匹配成功 后的数组
          • .notify_signingasync function (array){} + optional:自定义正在签到信息的
            1. arraystring[].keyword.signing 中与 .post_sign_in 中的返回值 正则匹配成功 后的数组
          • .filter_unbefittingasync function (data){} + optional:过滤不适配的
            1. datastring:同 .post_sign_in
        • site 成员

          1. schemestring:协议
          2. domainstring:域名
          3. urlobject:URL
            • getstring:配合 axios.get() 使用
            • poststring:配合 axios.post() 使用
        • optional

          表示 可选的

        • x -> y

          表示 xy支持,且 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 可选成员

        1. domain:域名

          格式同 site_config.domain

        2. path_log_in:登录路径

        3. path_sign_in:签到路径

          格式同 site_config.path 中对应的选项

        4. keyword_online:在线的关键字

        5. keyword_signed:已签到的关键字

        6. 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 成员

    1. res.about:关于

      • 返回 关于
    2. res.debug(level = 0):调试信息

      • 返回 根据 level 决定的部分或全部内部变量值
    3. res.record_log(site, code, message):记录日志

      • 返回 参数 message
    4. res.update_config(site_config, param_config)dev:更新配置

    5. res.publish_pipe(site, message):发布管道信息

      • 返回 message
    6. res.subscribe_pipe(site):订阅管道信息

      • 返回 res.publish_pipe(site, message) 中的 message
    7. res.sign_in(full_log = false):登录

      以下所列均为 soulsigh v2.1.0 以下适用

      • full_log = true
        • 成功:❤️ mmc ❤️ < [ ✔ 网站: 提示语] >
        • 失败:❤️ mmc ❤️ < [ ❗ 网站: 问题] / [ ✔ 网站: 提示语] >
      • full_log = false
        • 成功:❤️ mmc ❤️
        • 失败:❤️ mmc ❤️ < [ ❗ 网站: 问题] >

      <...>,意为里面的内容是一个单元

    8. 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
  • 筛选每种网站的 非敏感信息,用作反馈
  • 完全使用 表驱动法 重构 ,减少相似的表,缩减代码体积小声哔哔

更新

1.2.15

  1. 增加 return.detail.log,会记录每次网络请求的响应数据

    每个域名下一般有 2 条响应数据,即 .hook.get_log_in().hook.post_sign_in() 中的两次 axios;

    我并不会收集你的数据;

    如果需复制反馈,请 务必脱敏处理,里面会包含你的 个人信息

  2. 适配 *,泛域名

  3. 对于 关键字,优先匹配用户配置

  4. 增加 hook.notify_signing,个性化正在签到消息提示,使用关键字 keyword.signing,可选

  5. 增加 hook.filter_unbefitting,过滤不适配的网站

  6. 修改 hook.post_sign_in,仅用于推送配置,然后返回响应数据

  7. 重命名,filter -> signingnotify_sign_in -> notify_signed

  8. 支持兼容不同 soulsign 版本

  9. 修复异常无法抛出的问题

变更日志

1.2.14

  1. 重构 assert(),使用 operate_table()
  2. 改良 discuz.?.js,获取哈希值的办法
  3. 修改 match_keyword(),支持 正/反性关键词
  4. 增加 .keyword.filter,可以过滤消息并设置为 非警告 级别
  5. 修复 discuz.k.js,消息提示问题

1.2.13

  1. 修复 网络连接中断时 的异常情况

1.2.12

  1. 增加 discuz.dc & discuz.k
  2. 支持 param_config.path_xxx & param_config.keyword_signed
  3. 重写 config_path(),用到了 operate_table()
  4. 默认 param_config 可选项均加入应用脚本
  5. 修复 param_config.keyword_signed 读取问题
  6. 修复 method_site() 中多个 path 自动更新的规则问题,梅开二度?
  7. 修复 notify_sign_in() 的参数问题

1.2.11

  1. 支持 hook.notify_sign_in,可自定义已签到的通知消息
  2. 增加 operate_table() & operate_item(),表驱动
  3. 重写 config_xxx(),用到了 operate_xxx()
  4. 增加 时间戳,在 system_log_core()
  5. 修复 method_site() 中多个 path 不自动轮转的问题
  6. 修复 nexusphp.js
  7. 修改 match_keyword_list()match_keyword()

1.2.10

  1. 增加 eval 权限,便于模块化
  2. 增加 online / signed 关键字,去除 positive / negaitive 关键字
  3. 增加 system_xxx(),一系列
  4. 增加 nexusphp.js
  5. 重写 hook 部分,用 eval
  6. 清空 site_config.domain,由于更新会覆写个人的配置,现需手动配置
  7. 增加 persistence_log(),读取持久化的消息,就是另一个缓存,很少更新
  8. 修改 record_log(),可选消息持久化
  9. 修复 method_site() 中的 error,现改为 message,无法作用
  10. 修复 #1,判断是否已经签到关键词问题
  11. 增加 readme,在 application 目录中
  12. 增加 gitignore

1.2.9

  1. 移除 mmc.js 内部对 sspanel.js 的集成,hook
  2. 配置 sspanel.jshook
  3. 修复当 debugs.enable != true 时,没有错误抛出

1.2.8

  1. 修复 @domain 配置问题
  2. 修改 natfrp.js 的提示信息,这个脚本可能暂时或永久失效,因为有了 hCaptcha 验证
  3. 修复部分变量名

1.2.7

  1. 修复多个脚本调用不会刷新配置,取消缓存的特性

1.2.6

  1. 修改了 site_config 的格式
  2. 支持多个 path,即支持一种签到方式下的多种网址
  3. 修改文件目录

1.2.5

  1. 增加 about
  2. 修改 assert_type()
  3. 修改 view_log() & sign_in(),支持结果全输出
  4. 增加更多 system_log(),在 debug 运行时记录日志

1.2.4

  1. 增加 飘云阁.js
  2. 增加 natfrp领流量.js
  3. 证明可以 hook 为其他类型签到,决定签到方式

1.2.3

  1. 修改了 site_config 的格式
  2. 修复了更新 domain 时,sites 内索引不对的情况
  3. 改变部分 varlet,主要是函数内地局部变量
  4. 增加 update_config()dev,用来自动更新配置参数

1.2.2

  1. 支持在 hook 中引入 param
  2. 支持 pipehook 间相互通信
  3. 增加 asserts,支持适应不同参数列表,主要是有无 @param
  4. 支持 configs,存储传入的参数,site_config & param_config
  5. 增加 debugs
  6. 增加 system_log(),方便调试,record_log() 也会调用它
  7. 增加 debug(),支持根据等级输出

1.2.1

  1. 支持 hook,可能能支持其他网站类型了

1.2.0

  1. 形成模板

1.1.3

  1. 修改‘域名’文本框提示的文本
  2. 修改‘登录后应该有的关键字’文本框提示的文本

1.1.2

  1. 支持配置多个域名

1.1.1

  1. 支持配置检查在线的关键字

1.1.0stable

  1. 修复检测在线的问题

1.0.0

  1. 发布脚本

鸣谢

所有给予灵感和帮助的人儿们