# chaoxing-sign-cli **Repository Path**: msbb01/chaoxing-sign-cli ## Basic Information - **Project Name**: chaoxing-sign-cli - **Description**: 超星学习通签到Nodejs程序。支持普通签到、拍照签到、手势签到、位置签到、二维码签到,支持自动监测。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-09-09 - **Last Updated**: 2025-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

:herb:超星学习通签到:herb:

![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white) ![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white) ![Licence](https://img.shields.io/github/license/cxOrz/chaoxing-sign-cli?style=for-the-badge) 基于 Nodejs 实现的一个签到命令行工具。 **功能**: 普通签到、拍照签到、手势签到、位置签到、签到码签到、二维码签到(10秒变换不影响),多用户凭据储存,IM 协议自动签到。 **为确保你的代码最新与仓库保持同步,将在每次签到结束强制拉取代码更新**,如需关闭更新,请查看[issue2](https://github.com/cxOrz/chaoxing-sign-cli/issues/2#issuecomment-962781427),手动终止检查更新可在每次检查时连按 `Ctrl`+`C` 确认终止,更多功能正在开发 ... ## 环境 💻 可在任意运行 [NodeJS](https://nodejs.org/en/) > v16.14 的平台签到,Windows、MacOS、Linux ... 安卓手机上可以用 Termux 来运行NodeJS程序,[查看Termux教程](./src/docs/termux.md) 。 苹果手机请查看 [高级](https://github.com/cxOrz/chaoxing-sign-cli#%E9%AB%98%E7%BA%A7-) 部分,通过这种方式来使用,当然这种方式也适用于其他。 ## 部署 🛠 将仓库克隆到本地 ```bash git clone https://github.com/cxOrz/chaoxing-sign-cli.git ``` 进入项目文件夹,安装依赖 ```bash cd chaoxing-sign-cli && npm install ``` ## 运行 ⚙ ### 命令解释 - `npm start`:运行程序,若有签到则进行手动签到,若无则退出程序; - `npm run serve`:启动接口服务; - `npm run monitor`:监听模式,检测到签到将自动签上,无需人工干预; 一般情况下执行以下命令即可满足基础使用 ```bash npm start ``` ## 使用须知 📄 为了节约资源,只对2小时以内的活动签到。若同时有多个有效签到活动,只签最新发布的。将结束的课程移入其他文件夹,减少根目录的课程能够提高活动检测速度。 ### 二维码签到 在运行之前需要做些准备,请找一位挚友,发来拍的二维码的照片(无所谓几秒一变),用微信扫一扫二维码,或用其他工具识别,得到类似下面的结果: ![识别二维码得到字符串](./src/docs/qr.png) 复制其中的 `enc` 参数,不要复制多余内容和空格,例如 `1D0A628CK317F44CCC378M5KD92`,复制该值,询问时填入。若使用 UI 仓库的项目(查看`高级`),可以直接选择图片并自动解析得到enc参数。 ### 位置签到 根据运行时的提示输入**经纬度**和**详细地址**,经纬度在这里获取 [百度拾取坐标系统](https://api.map.baidu.com/lbsapi/getpoint/index.html),点击某位置,经纬度将出现在网页右上方,复制该值,询问时填入。详细地址样例:河南省郑州市中原区华中师范大学附属郑州万科城小学,该地址将显示在教师端。 ### 拍照签到 需要事先准备一张用来提交的照片。浏览器访问超星云盘:https://pan-yz.chaoxing.com ,在根目录上传一张你准备的照片,命名为 `0.jpg` 或 `0.png` 。若使用 UI 仓库的项目(查看`高级`),不需要上传云盘,可以直接选择图片提交签到。 ### 普通签到&手势签到&签到码签到 没有需要准备的,直接运行即可。 ### 监听模式 每次需要时启用2-4小时较为合适,请勿挂着不关。 ## 高级 🎲 以上内容介绍了最基本的用法,接下来介绍一些稍高级一些的使用方法。 ### 图形化界面 基于 React.js + Material UI 开发前端页面,整体设计灵感来自拟态。 访问 [这里](https://github.com/cxOrz/chaoxing-sign-ui) 查看图形化页面如何部署,使用图形化页面需要先部署接口才能正常工作。 ### 接口服务 首先运行 `npm install` 或者 `yarn`,安装依赖。 运行 `npm run serve` 将启动接口服务,接下来描述每个接口的参数以及调用方式:
展开接口详情 |路径|请求方式|参数|内容类型|返回内容| |-|-|-|-|-| |/|GET|无|无|\< String \>| |/login|POST|phone, password|JSON|\< String \>| |/activity|POST|uf, _d, vc3, uid|JSON|JSON| |/uvtoken|POST|uf, _d, vc3, uid|JSON|\< String \>| |/qrcode|POST|uf, _d, vc3, name, aid, uid, fid, enc|JSON|待填| |/location|POST|uf, _d, vc3, name, aid, uid, fid, address, lat, lon|JSON|待填| |/general|POST|uf, _d, vc3, name, aid, uid, fid|JSON|待填| |/photo|POST|uf, _d, vc3, name, aid, uid, fid, objectId|JSON|待填| |/upload|POST|uf, _d, vc3, uid, file, ?_token|multipart/form-data|待填| |/qrocr|POST|file|multipart/form-data|\< String \>| |/monitor/status|POST|phone|JSON|JSON| |/monitor/start|POST|phone, uf, _d, vc3, uid, lv, fid|JSON|JSON| |/monitor/stop|POST|phone|JSON|JSON|
### 最佳实践 在这里介绍部署接口的最佳方式,图形化页面的最佳实践请到它对应的仓库查看。 部署在服务器,步骤如下: 1. 安装 Node 环境,推荐使用 LTS 版本 2. 克隆代码,安装依赖 3. 配置项目中的 env.json 文件(可选) 4. 最后,使用 GNU Screen 或者 PM2 运行接口服务 还有一些事情必需知道: - 如果要在服务器使用监听功能,在运行接口服务之前,先运行一次 `npm run monitor` 来配置默认信息,填写完成后看到 "监听中",即可终止程序,信息已经写入本地。然后就可以运行 `npm run serve` 了。 - 如果使用腾讯文字识别来解析二维码,请在 env.json 中配置 secretId 和 secretKey。 - 本项目构建的 Docker 镜像,一切均为默认设置,局限性较大。如要求不高,简单签个到,请随意。
使用云函数注意事项 1. 此项目可以运行在 AWS Lambda 和 腾讯云函数上运行(均不支持监听)。如有需求运行在 Serverless 容器,请修改 env.json 中的 `SERVERLESS` 为 `true`。 2. 如使用腾讯云函数,请仔细按云函数文档操作,对代码稍作调整,并配置云函数启动文件 scf_bootstrap 内容为如下命令 ``` bash #!/bin/bash /var/lang/node16/bin/node -r ts-node/register src/serve.ts ```
至此,部署完成,可通过域名或服务器 IP 访问接口的默认路径 `/` ,看到欢迎页面。 ### 展示 演示地址:https://prod.d6afmntd8nh5y.amplifyapp.com (部署在香港,较慢,功能阉割版仅供演示) ![](https://636c-cloudbase-1a4211-1252446325.tcb.qcloud.la/chaoxing-sign-ui/1.png) ![](https://636c-cloudbase-1a4211-1252446325.tcb.qcloud.la/chaoxing-sign-ui/2.png) ## 贡献 本项目按照个人意愿进行开发,一些功能以及设计带有个人主观的想法。发起 pr 之前务必先发起issue进行讨论,之后新建一个分支(以提供的功能命名),并在此分支完成你的代码即可提交 pr。请务必保持代码整洁和 commit 规范。 ## 免责声明 本项目仅作为交流学习使用,通过本项目加深网络通信、接口编写、交互设计等方面知识的理解,请勿用作商业用途,任何人或组织使用项目中代码进行的任何违法行为与本人无关。