Skip to content

mdjhacker/cea

 
 

Repository files navigation

cea-logo
campusphere-elegant-auth

npm NPM

高校统一身份验证开发框架(已集成今日校园签到、查寝插件)
欢迎点击右上角 GitHub Repo stars 支持此项目

Demo

cea 命令行功能演示:

cea-demo

亮点

  • 关于验证码:使用 @ceajs/slider-captcha 支持滑块验证码(实机测试 1000 次通过 940 次),同时也支持普通图片验证码

  • 交互式配置: cea 提供交互式的命令行完成用户及学校的配置,同时也支持使用 toml 文件来配置

  • 验证持久化: 缓存验证信息于本地, 只在失效时登录并更新;

  • 多用户非阻塞: 利用 Node.js 异步特征,多用户可并行,实现毫秒级的多用户同时操作

  • 关于签到插件: (学校配置时)使用百度地图 API 获取学校全局签到地址, 使用今日校园接口返回的签到数据获取签到经纬度, 简单来说, 只需知道学校英文简称即可配置好所有签到信息, 充分懒人化

  • 复用历史成功签到数据:表单填写方面,Cea 会查找历史签到中最新且成功签到的数据作为模板填写当前表单;查寝图片上传方面,Cea 使用同样的策略获取图片 URL;这省去了配置表单的繁琐过程和图片上传的费时操作

  • 支持日志路由转发到微信:方便查看运行结果日志 (详见 部署指南),这也方便 Cea 插件开发者实现推送和统一日志输出 (详见 插件开发)

  • 支持一键部署签到程序:依赖自动安装、触发器自动配置,可能是全网最快最方便的部署

准备工作

Cea 使用纯 ESM 模块系统发布,请确保 Node.js(^12.20.0 || ^14.13.1 || >=16.0.0) 和 NPM 包管理器在你的操作环境中正确安装

若 Node 版本过低,我们也提供了兼容版,该版本(cea@cjs)没有命令行工具,只能作为模块使用,这也是我们运行在腾讯云上的版本

兼容性说明

Cea 在配置学校时会显示学校接入方式是 CLOUD 还是 NOTCLOUD

CLOUD(表示学校已接入今日校园统一登陆) 字段的实现是统一的,应该没有兼容性问题

NOTCLOUD (表示学校未接入今日校园) 只能爬取网页获得凭据:cea 的登录页爬取策略比较智能(并非 hard coded),默认根据第一个登录表单完成全部逻辑,这保证了不错的兼容性

如确实遇到了边缘情况,可以提交 PR (参考 Contributing Guide),只需修改 ./vercel/data/school-edge-cases.json 文件,添加你的学校。所填字段将作为改学校的特殊值覆盖默认值,默认值就是 NOTCLOUD 对象,详细教程请关注讨论 #20

若你遇到其它问题,请附带日志提交 Issue

开始使用

作为命令行使用

  1. 安装

    npm i -g cea
  2. 配置用户

    交互式配置更简单,会自动配置学校签到位置;但是这种简介可能带来不精确性(比如获取的学校位置不对),这个时候你应该使用配置文件配置,配置文件还支持配置推送方式和验证码识别方式:

    # 使用交互式命令行配置,暂无推送功能和验证码识别模式配置
    cea user
    # 使用配置文件加载用户
    cea load

    配置文件说明

  3. 执行签到

    cea sign
  4. 查看 cea 的其它能力

    cea -h

作为模块使用

基本流程:引入 cea 和对应插件 -> 创建 cea 实例 -> 注册插件 -> 运行

安装 Cea,如需在低版本 Node 上运行,请安装 cea@cjs 版本

# 新版(推荐)
npm i cea
# 兼容版
npm i cea@cjs

下面是今日校园签到的示例(cea-check-in 插件已内置,无需特别安装)

// 导入 Cea 和内置的签到插件中的函数 checkIn
import Cea, { checkIn } from 'cea'
// 创建 Cea 的实例
const cea = new Cea()
// 注册插件
cea.addPlugin(checkIn)
// 执行签到脚本
cea.start()

插件列表

贡献指南

参考 Contributing Guide

插件开发

插件开发流程:引入 cea-core 的功能 -> 开发功能 -> 导出一个无入参出参的函数

插件核心 cea-core docs/api/core/README.md

插件示例 check-in-helper docs/api/plugins/check-in-helper/README.md

我们鼓励插件开发者使用日志统一输出和路由转发到微信的功能,操作方法是:

// 导入 cea-core 包提供的日志工具 log
import { log } from '@ceajs/core'
// 输出统一的命令行日志,此类日志也会被路由(当 `notifier` 字段配置时),等待最后推送到微信
log.success('hello')
// 异步推送日志,此函数也可接受字符串形参,当作日志一同推送
log.notify()

鸣谢

感谢 Cloudbase-FrameworkGithub ActionsCoding CIGitee Pages 提供的优秀服务 🎉

感谢 wisedu-unified-login-api 提供的最初灵感 ❤️

感谢同类项目的存在,让社区能够相互学习和进步:

声明

cea - Licensed under MIT

campusphere-elegant-auth 仅用于学习和研究 Node.js,请勿商用或违法使用。

作者: , 邮箱: i@beetcb.com

About

高校统一身份验证开发框架(已集成今日校园签到&查寝插件)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 86.4%
  • JavaScript 9.1%
  • HTML 3.0%
  • Dockerfile 1.3%
  • CSS 0.2%