├── .github └── workflows │ ├── cron-fetch.yaml │ ├── docker-image.yaml │ ├── docs.yaml │ └── pyinstaller.yaml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── .vuepress │ ├── config.js │ ├── public │ │ ├── image │ │ │ ├── exam-qrcode.png │ │ │ └── miniprogram-qrcode.png │ │ ├── redirect.html │ │ └── verify.html │ └── theme.js ├── README.md ├── faq │ ├── README.md │ ├── high-freq-ask.md │ └── no-ask.md ├── guide │ ├── README.md │ ├── changelog.md │ ├── instructions.md │ ├── other.md │ ├── prerequisites.md │ ├── qq.md │ ├── qr-sign.md │ └── third.md └── package.json └── resource ├── .dockerignore ├── Dockerfile ├── Dockerfile.zh ├── replace.py ├── requirements.txt └── waadri.ico /.github/workflows/cron-fetch.yaml: -------------------------------------------------------------------------------- 1 | name: 定时拉取源代码版本 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | schedule: 8 | - cron: "0,20,40 * * * *" 9 | workflow_dispatch: 10 | inputs: 11 | force: 12 | description: '强制拉取最新版本' 13 | required: true 14 | default: false 15 | type: boolean 16 | 17 | jobs: 18 | compare-versions: 19 | runs-on: ubuntu-latest 20 | outputs: 21 | TRIGGER_ACTION: ${{ steps.compare-versions.outputs.TRIGGER_ACTION }} 22 | 23 | steps: 24 | - name: 获取最新版本信息 25 | id: get-version 26 | uses: fjogeleit/http-request-action@v1 27 | with: 28 | url: "https://source.waadri.top/cx/get_other_node_version.json" 29 | method: "GET" 30 | timeout: 90000 31 | 32 | - name: 接口响应 33 | run: echo "${{ steps.get-version.outputs.response }}" 34 | 35 | - name: 设置版本号 36 | id: parse-response 37 | run: | 38 | echo "VERSION=${{ fromJson(steps.get-version.outputs.response).latest_version }}" >> $GITHUB_ENV 39 | echo "URL=https://source.waadri.top/cx/other-signin-node-docker.py" >> $GITHUB_ENV 40 | 41 | - name: 获取当前 GitHub 发布版本 42 | id: get-release-version 43 | run: | 44 | release_version=$(curl -s https://api.github.com/repos/Misaka-1314/SignNode-AutoBuild/releases/latest | jq -r .tag_name) 45 | echo "CURRENT_RELEASE_VERSION=$release_version" >> $GITHUB_ENV 46 | echo "CURRENT_RELEASE_VERSION=${release_version}" 47 | 48 | - name: 比较版本 49 | id: compare-versions 50 | run: | 51 | echo "当前版本=v${{ env.VERSION }} 已构建版本=${{ env.CURRENT_RELEASE_VERSION }}" 52 | 53 | if [ "v$VERSION" != "$CURRENT_RELEASE_VERSION" || "${{ github.event.inputs.force }}" == "true" ]; then 54 | echo "版本更新,触发新的 Action" 55 | echo "TRIGGER_ACTION=true" >> $GITHUB_OUTPUT 56 | echo "TRIGGER_ACTION=true" >> $GITHUB_ENV 57 | fi 58 | 59 | 60 | - name: 安装 Python 61 | uses: actions/setup-python@v5 62 | 63 | - name: 拉取最新代码 64 | if: github.event.inputs.force == 'true' || env.TRIGGER_ACTION == 'true' || github.event_name == 'push' 65 | run: | 66 | wget -O "main.py" "${{ env.URL }}" 67 | wget -O "replace.py" "https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/main/resource/replace.py" 68 | wget -O "waadri.ico" "https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/main/resource/waadri.ico" 69 | wget -O "Dockerfile" "https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/main/resource/Dockerfile" 70 | wget -O ".dockerignore" "https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/main/resource/.dockerignore" 71 | wget -O "requirements.txt" "https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/main/resource/requirements.txt" 72 | echo "v${{ env.VERSION }}" > version.txt 73 | 74 | python replace.py 75 | 76 | - name: 上传 Python 代码 77 | if: github.event.inputs.force == 'true' || env.TRIGGER_ACTION == 'true' || github.event_name == 'push' 78 | uses: actions/upload-artifact@v4 79 | with: 80 | name: main-v${{ env.VERSION }}.py 81 | path: ./main.py 82 | 83 | - name: 提交文件 84 | if: github.event.inputs.force == 'true' || env.TRIGGER_ACTION == 'true' || github.event_name == 'push' 85 | run: | 86 | git init 87 | git config --local user.email "github-actions[bot]@users.noreply.github.com" 88 | git config --local user.name "github-actions[bot]" 89 | git add . && git commit -m "更新代码" 90 | 91 | - name: 推送到 GitHub 92 | if: github.event.inputs.force == 'true' || env.TRIGGER_ACTION == 'true' || github.event_name == 'push' 93 | uses: ad-m/github-push-action@master 94 | with: 95 | github_token: ${{ secrets.GITHUB_TOKEN }} 96 | branch: dev 97 | force: true 98 | directory: . 99 | 100 | call_workflow-1: 101 | needs: compare-versions 102 | if: github.event.inputs.force == 'true' || needs.compare-versions.outputs.TRIGGER_ACTION == 'true' || github.event_name == 'push' 103 | uses: Misaka-1314/SignNode-AutoBuild/.github/workflows/docker-image.yaml@main 104 | secrets: 105 | TENCENT_CCR_USERNAME: ${{ secrets.TENCENT_CCR_USERNAME }} 106 | TENCENT_CCR_PASSWORD: ${{ secrets.TENCENT_CCR_PASSWORD }} 107 | 108 | call_workflow-2: 109 | needs: compare-versions 110 | if: github.event.inputs.force == 'true' || needs.compare-versions.outputs.TRIGGER_ACTION == 'true' || github.event_name == 'push' 111 | uses: Misaka-1314/SignNode-AutoBuild/.github/workflows/pyinstaller.yaml@main 112 | -------------------------------------------------------------------------------- /.github/workflows/docker-image.yaml: -------------------------------------------------------------------------------- 1 | name: 构建并推送 Docker 镜像 2 | 3 | on: 4 | workflow_call: 5 | secrets: 6 | TENCENT_CCR_USERNAME: 7 | required: true 8 | TENCENT_CCR_PASSWORD: 9 | required: true 10 | 11 | jobs: 12 | docker-image: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: 检出代码 17 | uses: actions/checkout@v4 18 | with: 19 | ref: dev 20 | 21 | - name: 设置 Docker Buildx 22 | uses: docker/setup-buildx-action@v3 23 | 24 | - name: 缓存 Docker 构建层 25 | uses: actions/cache@v4 26 | with: 27 | path: /tmp/.buildx-cache 28 | key: ${{ runner.os }}-buildx-${{ github.sha }} 29 | restore-keys: | 30 | ${{ runner.os }}-buildx- 31 | 32 | - name: 登录腾讯云容器镜像仓库 33 | uses: docker/login-action@v3 34 | with: 35 | registry: ccr.ccs.tencentyun.com 36 | username: ${{ secrets.TENCENT_CCR_USERNAME }} 37 | password: ${{ secrets.TENCENT_CCR_PASSWORD }} 38 | 39 | - name: 获取版本号 40 | id: fetch-version 41 | run: echo "VERSION=$(cat ./version.txt)" > $GITHUB_ENV 42 | 43 | - name: 构建并推送多平台 Docker 镜像 44 | run: | 45 | docker buildx build \ 46 | --file ./Dockerfile \ 47 | --label image.source=自动签到节点 \ 48 | --label image.version=${{ env.VERSION }} \ 49 | --platform linux/amd64,linux/arm64 \ 50 | --tag ccr.ccs.tencentyun.com/misaka-public/waadri-sign-node:latest \ 51 | --tag ccr.ccs.tencentyun.com/misaka-public/waadri-sign-node:${{ env.VERSION }} \ 52 | --push . 53 | -------------------------------------------------------------------------------- /.github/workflows/docs.yaml: -------------------------------------------------------------------------------- 1 | name: 文档发布 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: 签出代码 14 | uses: actions/checkout@v4 15 | with: 16 | ref: main 17 | 18 | - name: 安装依赖 19 | run: npm i -D 20 | working-directory: docs 21 | 22 | - name: 构建文档 23 | run: npm run docs:build 24 | working-directory: docs 25 | 26 | - name: 签出原文件 27 | uses: actions/checkout@v4 28 | with: 29 | ref: main 30 | path: docs/.vuepress/dist/temp 31 | fetch-depth: 0 32 | 33 | - name: 操作文件 34 | run: | 35 | mkdir source && cp -r temp/docs/* ./source 36 | rm -rf temp 37 | working-directory: docs/.vuepress/dist 38 | 39 | - name: 提交文件 40 | run: | 41 | git init 42 | git config --local user.email "github-actions[bot]@users.noreply.github.com" 43 | git config --local user.name "github-actions[bot]" 44 | git add . && git commit -m "更新文档" 45 | working-directory: docs/.vuepress/dist 46 | 47 | - name: 推送到 GitHub 48 | uses: ad-m/github-push-action@master 49 | with: 50 | github_token: ${{ secrets.GITHUB_TOKEN }} 51 | branch: pages 52 | force: true 53 | directory: docs/.vuepress/dist -------------------------------------------------------------------------------- /.github/workflows/pyinstaller.yaml: -------------------------------------------------------------------------------- 1 | name: 构建并发布 PyInstaller 应用 2 | 3 | on: 4 | workflow_call: 5 | 6 | jobs: 7 | pyinstaller-linux: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - name: 检出代码 12 | uses: actions/checkout@v4 13 | with: 14 | ref: dev 15 | 16 | - name: 设置Python环境 17 | uses: actions/setup-python@v5 18 | with: 19 | python-version: "3.12" 20 | 21 | - name: 安装依赖 22 | run: | 23 | python -m pip install --upgrade pip 24 | pip install -r requirements.txt 25 | pip install pyinstaller 26 | 27 | - name: 使用PyInstaller构建 28 | run: | 29 | pyinstaller --onefile --name sign-node --icon=waadri.ico main.py 30 | 31 | - name: 上传构建文件 (Linux) 32 | uses: actions/upload-artifact@v4 33 | with: 34 | name: sign-node.linux-amd64 35 | path: ./dist/sign-node 36 | 37 | pyinstaller-windows: 38 | runs-on: windows-latest 39 | 40 | steps: 41 | - name: 检出代码 42 | uses: actions/checkout@v4 43 | with: 44 | ref: dev 45 | 46 | - name: 设置Python环境 47 | uses: actions/setup-python@v5 48 | with: 49 | python-version: "3.12" 50 | 51 | - name: 安装依赖 52 | run: | 53 | python -m pip install --upgrade pip 54 | pip install -r requirements.txt 55 | pip install pyinstaller 56 | 57 | - name: 使用PyInstaller构建 58 | run: | 59 | pyinstaller --onefile --name sign-node.exe --icon=waadri.ico main.py 60 | 61 | - name: 上传构建文件 (Windows) 62 | uses: actions/upload-artifact@v4 63 | with: 64 | name: sign-node.windows-amd64 65 | path: ./dist/sign-node.exe 66 | 67 | release: 68 | runs-on: ubuntu-latest 69 | needs: [pyinstaller-linux, pyinstaller-windows] 70 | steps: 71 | - name: 检出代码 72 | uses: actions/checkout@v4 73 | with: 74 | ref: dev 75 | 76 | - name: 获取版本号 77 | id: fetch-version 78 | run: echo "VERSION=$(cat ./version.txt)" > $GITHUB_ENV 79 | 80 | - name: 下载 Linux 构建包 81 | uses: actions/download-artifact@v4 82 | with: 83 | path: ./ 84 | merge-multiple: true 85 | 86 | - name: 下载 Windows 构建包 87 | uses: actions/download-artifact@v4 88 | with: 89 | path: ./ 90 | merge-multiple: true 91 | 92 | - name: 文件目录 93 | run: ls -R ./ 94 | 95 | - name: 安装 zip 96 | uses: montudor/action-zip@v1 97 | 98 | - name: 压缩文件 99 | run: | 100 | zip -r sign-node.linux-amd64.zip ./sign-node 101 | zip -r sign-node.windows-amd64.zip ./sign-node.exe 102 | 103 | - name: 创建发布版本 104 | uses: softprops/action-gh-release@v2 105 | with: 106 | files: | 107 | sign-node.linux-amd64.zip 108 | sign-node.windows-amd64.zip 109 | tag_name: "${{ env.VERSION }}" 110 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *main.py 2 | *.spec 3 | 4 | package-lock.json 5 | 6 | .temp 7 | .cache 8 | .vscode 9 | 10 | node_modules 11 | build 12 | dist 13 | tmp -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 河南省WiFi攻防研究所 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | [文档构建](https://github.com/Misaka-1314/SignNode-AutoBuild/actions/workflows/docs.yaml) 3 | 4 | [定时拉取](https://github.com/Misaka-1314/SignNode-AutoBuild/actions/workflows/cron-fetch.yaml) 5 | -------------------------------------------------------------------------------- /docs/.vuepress/config.js: -------------------------------------------------------------------------------- 1 | import { viteBundler } from '@vuepress/bundler-vite' 2 | import { defineUserConfig } from 'vuepress' 3 | 4 | import theme from "./theme.js"; 5 | 6 | export default defineUserConfig({ 7 | bundler: viteBundler({ 8 | viteOptions: {}, 9 | vuePluginOptions: {}, 10 | }), 11 | theme: theme, 12 | base: "/./", 13 | head: [ 14 | ['link', { rel: 'icon', href: 'https://avatars.githubusercontent.com/u/90495619?v=4' }] 15 | ['meta', { name: 'algolia-site-verification', content: '85D4DB2CA351BEC9' }], 16 | ['meta', { name: 'referrer', content: 'never' }], 17 | ], 18 | locales: { 19 | "/": { 20 | lang: "zh-CN", 21 | title: "WAADRI 文档", 22 | description: "WAADRI 超新星学习通在线自动签到抢答系统 文档", 23 | }, 24 | }, 25 | }) -------------------------------------------------------------------------------- /docs/.vuepress/public/image/exam-qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/bfa74c148a769928291c637b605284c9022240cd/docs/.vuepress/public/image/exam-qrcode.png -------------------------------------------------------------------------------- /docs/.vuepress/public/image/miniprogram-qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/bfa74c148a769928291c637b605284c9022240cd/docs/.vuepress/public/image/miniprogram-qrcode.png -------------------------------------------------------------------------------- /docs/.vuepress/public/redirect.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 学习通签到联盟 6 | 118 | 119 | 120 | 121 |
122 |
123 |

欢迎来到 学习通签到联盟

124 |

由于本站使用繁琐、要求众多,我们为您精选了更多方便使用的签到网站或小程序:

125 | 142 |
143 |
144 |

即将为您智能选择并跳转至一个优质站点...

145 |

您将在 5 秒后自动前往:

146 |

147 | 148 |
149 |
150 | 151 | 232 | 233 | 234 | -------------------------------------------------------------------------------- /docs/.vuepress/public/verify.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Algolia Verification 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/.vuepress/theme.js: -------------------------------------------------------------------------------- 1 | import { hopeTheme } from "vuepress-theme-hope"; 2 | 3 | export default hopeTheme( 4 | { 5 | docsDir: "docs", 6 | logo: "https://avatars.githubusercontent.com/u/90495619?v=4", 7 | repo: "Misaka-1314/SignNode-AutoBuild", 8 | hostname: "https://doc.waadri.top", 9 | 10 | author: { 11 | name: "Misaka", 12 | url: "https://github.com/Misaka-1314", 13 | }, 14 | 15 | pageInfo: ["Author", "Original", "Date", "Category", "Tag", "ReadingTime"], 16 | 17 | markdown: { 18 | imgMark: true, //支持图片标记 19 | imgLazyload: true, //支持图片懒加载 20 | imgSize: true, //支持图片大小 21 | tabs: true, //支持表格 22 | gfm: true, //支持完整的 GFM 语法 23 | tasklist: true, //支持任务列表 24 | include: true, //支持 include 语法 25 | align: true, //支持对齐 26 | mark: true, //支持标记 27 | sub: true, //支持下标 28 | sup: true, //支持上标 29 | demo: true, //支持 demo 30 | plantuml: true, //支持 PlantUML 31 | codeTabs: true, //支持代码块分组 32 | }, 33 | plugins: { 34 | // 搜索从设置转移到主题 35 | docsearch: { 36 | appId: "WNF44MLO3Y", 37 | apiKey: "783936724dafe33256a4388c113d8099", 38 | indexName: "doc_waadri_top_wnf44mlo3y_pages", 39 | }, 40 | // 图标 41 | icon: { 42 | assets: [ 43 | "//at.alicdn.com/t/c/font_2410206_5vb9zlyghj.css", 44 | "https://npm.elemecdn.com/font6pro@6.4.0/css/fontawesome.min.css", 45 | "https://npm.elemecdn.com/font6pro@6.4.0/css/all.min.css", 46 | ] 47 | }, 48 | comment: { 49 | /** 50 | * Using Giscus 评论 51 | */ 52 | provider: "Giscus", 53 | repo: "Misaka-1314/SignNode-AutoBuild", 54 | repoId: "R_kgDONKu_jQ", 55 | category: "Announcements", 56 | categoryId: "DIC_kwDONKu_jc4CoWNm", 57 | 58 | }, 59 | // 临时弹窗 60 | notice: [ 61 | { 62 | path: "/", 63 | title: '温馨提示', 64 | content: ' 在群里提问文档中包含的内容,可能被禁言或请出群聊!

本文档由 WAADRI 和 Misaka 提供支持,网站由 WAADRI 维护!', 65 | actions: [], 66 | showOnce: true, 67 | } 68 | ], 69 | }, 70 | }, 71 | { 72 | check: true, 73 | compact: true, 74 | custom: true, 75 | debug: false, 76 | } 77 | ); -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | home: true 3 | icon: iconfont icon-home 4 | title: 首页 5 | index: false 6 | heroImage: https://avatars.githubusercontent.com/u/90495619?v=4 7 | heroText: 超新星学习通自动签到抢答系统 8 | tagline: 一个完全免费使用的自动签到抢答系统,作者从未授权在任何平台上传播或销售网站内容。 9 | actions: 10 | - text: 使用教程💡 11 | link: /guide/ 12 | type: primary 13 | 14 | - text: 网站地址🌱 15 | link: https://cx.waadri.top/login 16 | 17 | features: 18 | - title: 非营利性 19 | icon: iconfont icon-storage 20 | details: 本系统完全免费使用,请大家注意防范欺诈行为,以免上当受骗。 21 | 22 | - title: 使用繁琐 23 | icon: iconfont icon-more 24 | details: 配置较为繁琐,动手能力不强或嫌麻烦的用户请勿使用,没有人会教你。 25 | 26 | - title: 可扩展 27 | icon: fa-solid fa-file-user 28 | details: 由于官方节点使用人数较多,您登录后可能只能使用功能不如官方的第三方节点。 29 | 30 | - title: 支持类型多 31 | icon: iconfont icon-light 32 | details: 除二维码外的签到类型,经过复杂的配置后,均可全自动完成。 33 | 34 | copyright: false 35 | footer: MITWTFPL Licensed | Copyright © 2020 - 2025 By github.com/WAADRI 36 | --- 37 | -------------------------------------------------------------------------------- /docs/faq/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 常见问题 3 | index: false 4 | icon: fa-regular fa-circle-question 5 | category: 6 | - Question 7 | sticky: true 8 | star: true 9 | --- 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/faq/high-freq-ask.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Q群其它高频问题 3 | icon: fa-regular fa-circle-xmark 4 | category: 5 | - Question 6 | sticky: true 7 | star: true 8 | order: 2 9 | --- 10 | 11 | :::warning 12 | 以下问题在 QQ 群内询问频率过高,特在此公示,后续群内不再解答。 13 | ::: 14 | 15 | ## 1. 签到配置中的节点选项点不动 16 | 17 | 请确认账号是否处于开启监控状态,在此状态下无法重新选择签到节点,请停止监控后进行选择,如果账号未处于开启监控状态下请加群寻求帮助,群内提问时请明确说明未开启监控,否则将一律视为不看本文档说明而直接忽略提问。 18 | 19 | ## 2. 网站主页随机跳转其它项目网站 20 | 21 | 此举是为了给其它学习通在线签到联盟成员的网站引流,因此访问 https://cx.waadri.top/ 会随机跳转到联盟成员的网站,学习通在线自动签到抢答系统的登录页在本文档首页点击网站地址即可进入,如若后续想快速进入记得收藏。 22 | 23 | **未完待续……** 24 | -------------------------------------------------------------------------------- /docs/faq/no-ask.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Q群禁问 3 | icon: fa-regular fa-circle-xmark 4 | category: 5 | - Question 6 | sticky: true 7 | star: true 8 | order: 1 9 | --- 10 | 11 | :::warning 12 | 以下问题,在 QQ 群询问,一定会被禁言或请出群聊。 13 | ::: 14 | 15 | ## 1. 设备特征码提交时的口令是什么? 16 | 17 | 请仔细阅读网站提示,群内 **禁止询问或发送** 正确口令(如果网站上的标红加粗字体还不能引起你的注意的话说明这个完全不适合你,请自觉停止使用)。 18 | 19 | ## 2. 能不能破解二维码签到? 20 | 21 | 不能,原因不赘述。再看一遍本系列教程。 22 | 23 | ## 3. 二维码怎么签? 24 | 25 | [二维码签到扫码小程序的使用方法](../guide/qr-sign.md) 26 | 27 | ## 4. 官方节点无余位怎么办? 28 | 29 | 使用官方节点候补功能,如果着急使用也可以先使用第三方节点,第三方节点建议自己搭建自己使用。 30 | 31 | 使用别人的第三方节点安全性可能无法保证。 32 | 33 | 除此以外第三方节点有部分功能没有开放,请仔细阅读第三方节点使用须知! 34 | 35 | ## 5. 第三方节点位置签到显示位置被篡改是为什么? 36 | 37 | 第三方节点代码被搭建者篡改,换个第三方节点再试或者用官方节点。 38 | 39 | 由于第三方节点代码开源,官方无法保证第三方节点代码未被篡改,选择节点时请自行斟酌或者自己搭建第三方节点使用。 40 | -------------------------------------------------------------------------------- /docs/guide/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 教程 3 | index: false 4 | icon: iconfont icon-creative 5 | category: 6 | - Guide 7 | --- 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/guide/changelog.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 更新日志 3 | icon: iconfont icon-creative 4 | category: 5 | - Guide 6 | sticky: true 7 | star: true 8 | order: 100 9 | --- 10 | 11 | ## 2025-05-25 12 | 13 | + 根据用户反馈,再次调整针对定时发放的签到的成功次数记录规则,当签到为定时发放且班级内学生数量很少时将不计入签到成功记录 14 | + 修复部分情况下登录后会一直重定向至主页的问题 15 | + 修复页面嵌入拍照图片的表格在对某列重新排序后无法查看原图的问题 16 | 17 | ## 2025-05-18 18 | 19 | + 修复由于学习通更新导致反钓鱼签到模式失效的问题 20 | + 官方节点部分bug修复 21 | 22 | ## 2025-05-12 23 | 24 | + 修复了学习通更新导致手势、签到码和指定位置信息获取失败的问题,目前将使用爆破的方式获取手势和签到码,因此签到时可能需要等待一段时间 25 | + 接口1新增夜间暂停签到监控功能,将在每日0时至6时暂停签到监控 26 | + 为节省服务器资源,第三方节点新增夜间暂停爆破和位置信息解析功能,每日0点至6点将无法获取新的手势、签到码和指定位置信息,此时段内新发布的以上类型签到将会签到失败 27 | + 由于微信通知过于频繁导致账号被频繁风控,机器人将不再进行任何通知,后续新的通知渠道敬请关注官方QQ群通知 28 | 29 | ## 2025-05-06 30 | 31 | + 根据用户反馈,调整针对定时发放的签到的成功次数记录规则,当签到为定时发放且班级内学生数量较少时将不计入签到成功记录 32 | + 修复了下课签退类型的签到获取指定签退位置信息出错的问题 33 | 34 | ## 2025-05-03 35 | 36 | + 修复由于学习通更新导致接口234在长时间监控后无法获取签到的问题,由于学习通本次更新后官方节点防频繁功能失效,因此已取消官方节点防频繁功能,接口2和接口3的监控频率调整为5分钟查询一次签到活动且可能在长时间监控后提示“请勿频繁操作”,接口4的监控频率调整为1分钟查询一次签到活动且暂未发现频繁限制,为了确保接口4的请求不会过于频繁,本次更新后将不再支持自行选择接口4进行签到监控,仅在接口2和接口3均频繁时自动切换接口4进行监控 37 | 38 | ## 2025-04-26 39 | 40 | + 近期检测到少数用户通过自己创建课程发定时签到来规避7天无签到自动停止签到监控的限制。即日起,针对定时发放的签到,官方节点在签到成功后将不再计入7天内的签到成功记录中,因此如若您最近7天内使用官方节点没有非定时发放的签到的签到成功记录依然会被停止签到监控。有需要的用户可选择使用登录页广告上的签到项目 41 | + 修复了部分情况下获取指定位置信息出错的问题 42 | 43 | ## 2025-04-21 44 | 45 | + 修复由于学习通更新导致手势和签到码无法获取的问题 46 | + 修复由于学习通更新导致部分指定位置签到无法获取指定位置信息的问题 47 | + 修复由于学习通更新导致签到信息盗用模式无法盗用签到信息的问题 48 | + 修复由于学习通更新导致手动签到模式无法获取已签情况和已签用户信息的问题 49 | + 修复由于学习通更新导致官方节点接口2和接口3出现频繁提示的问题 50 | 51 | ## 2025-04-13 52 | 53 | + 新增学习通下课签退功能支持 54 | + 修复了部分情况下接口2无法监测到签到的问题 55 | + 优化了各节点的签到速度 56 | + 手动签到链接和二维码远程获取链接设置了签到发布后的24小时内链接有效,过期后链接将无法打开进行查看或签到 57 | + 连续8天无签到惩罚力度加强,首次惩罚将禁用官方节点2天,后续再次触发惩罚禁用时间将依次递增2天,禁用天数每学期末重置 58 | + 其它细节优化 59 | 60 | ## 2025-04-03 61 | 62 | + 修复了使用接口234监测到签到时显示的课程名称为班级名称的问题 63 | + 修复了代码中的一处可能导致无法监测到签到的逻辑判断问题 64 | 65 | ## 2025-03-23 66 | 67 | + 重构官方签到节点代码,进一步优化了官方节点的稳定性,并增加了代码执行过程日志记录,方便日后用户签到出现问题时进行针对性排查 68 | + 进一步优化了二维码签到逻辑,加快了扫码后的签到速度,进一步降低了签到过程中二维码过期导致签到失败的可能性 69 | + 为提高签到监控效率,使用接口2、接口3和接口4启动监控获取课程列表时将不再监控用户身份为助教的课程和已结束的课程,此外此更新预计可解决部分课程使用接口4进行签到监控时出现“无权限”提示的问题 70 | + 当监测到用户未选择的自动签到类型的签到后将在签到日志中输出一条取消签到提示 71 | + 其它部分优化 72 | 73 | ## 2025-03-09 74 | 75 | + 修复了近期官方节点运行不稳定的情况,优化了监测到的部分问题(官方2号和3号节点将在3月13日前完成优化并上线) 76 | 77 | ## 2025-02-28 78 | 79 | + 界面UI更新,签到配置页与签到日志页合并,配以渐入渐出动画提高观感效果,页面展示更清晰美观 80 | + 取消微信的节点空缺通知功能,新增官方节点候补功能进行接替,确保绑定邮箱的用户也可以拥有良好的体验,本功能入口在杂项配置中 81 | + 新增启动签到监控的情况下修改签到配置功能,避免了停止监控修改配置时官方节点被抢造成的尴尬,修改后可一键重启签到监控 82 | + 新增关键信息二次同步功能,当出现官方节点上线/离线、提交了设备特征码、绑定/解绑了微信/邮箱等事件后能更及时将对应状态同步至网页端,无需频繁刷新页面 83 | + 第三方节点列表增加刷新按钮,并增加是否支持邮件发送功能显示,方便确认是否可以通过邮件接收签到信息 84 | + 签到日志页面增加节点在线状态显示,方便掌握当前节点可用状态,当节点离线时可及时切换 85 | + 设备特征码提交功能移至杂项配置中并常驻,换设备后可随时提交自己最新设备的特征码 86 | + 强化了设备特征码提交和绑定微信/邮箱的提示 87 | + 为方便问题排查和日志审计,取消每日0时清空签到日志的功能,签到日志将保留一学期,网站中将显示最新的100条日志 88 | + 优化各官方节点签到释放逻辑,确保签到不会因为主服务器的原因而被停止 89 | + 接口234每日6时开始监控时将在签到日志中输出一条提醒方便确认状态 90 | + 其它细节优化 91 | 92 | ## 2024-12-19 93 | 94 | + 修复部分情况下单个节点使用用户全部不明原因监控停止问题 95 | 96 | ## 2024-12-12 97 | 98 | + 针对连续7天无签到用户的惩罚机制上线,当连续两天被系统检测到过去7天内每天都使用官方节点启动过签到监控且无签到将被禁止使用官方节点1天,请在确保需要使用系统进行签到的情况下使用官方节点 99 | 100 | ## 2024-12-10 101 | 102 | + 为应对学习通日后可能的更新,现强制要求所有用户需在提交设备指纹后才可启动签到监控,提交方法可在启动监控时弹出的提示信息中查看 103 | + 群聊签到更新 104 | + 增加签到类型判断 105 | + 在微信和邮件通知中增加签到开始时间、签到结束时间和签到持续时间提醒 106 | + 手势签到逻辑向课程或班级的手势签到逻辑看齐,即当有同学完成签到时才进行签到,并在微信和邮件通知中增加手势码和手势示意图提示 107 | + 微信和邮件通知中新增群聊二维码签到二维码远程获取链接提示,可实时获取教师端最新签到二维码 108 | + 优化群聊二维码签到逻辑,当有同学完成签到时才进行签到 109 | + 优化群聊签到结束检测机制,签到结束检测更准确 110 | + 签到模式更新 111 | + 在开启手动签到模式的情况下可以在手动签到页面查看已签人员名单,在签到类型为拍照签到或普通位置签到的情况下还可以查看已签人员的签到信息 112 | + 在开启手动签到模式和签到信息盗用模式的情况下在监测到拍照签到或普通位置签到后不仅可以在手动签到页面查看已签人员的签到信息,还可以自行选择要盗用的签到信息 113 | + 第三方节点服务更新 114 | + 新增用户签到信息更新功能,在使用第三方节点启动监控的情况下在网站上更新签到信息后信息将自动同步至第三方节点服务端,无需重启监控 115 | + 优化签到信息获取逻辑,相同的签到活动获取签到信息(如签到手势或签到指定位置)将仅请求一次服务器,降低由于频繁请求而导致IP被ban的可能 116 | + 新增人数限制功能,节点搭建者可限制节点使用人数,第三方节点列表也将显示节点限制人数 117 | + 扫码小程序的签到详情展示逻辑更改,签到成功人员中将仅展示使用网站签到成功的人员,签到结果为“已签到过”、“签到已结束”和“非本班学生”的将不再显示在签到成功人员中 118 | + 其他优化 119 | -------------------------------------------------------------------------------- /docs/guide/instructions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 使用须知 3 | icon: iconfont icon-creative 4 | category: 5 | - Guide 6 | sticky: true 7 | star: true 8 | order: 1 9 | --- 10 | 11 | ## 基本使用规则 📌 12 | 13 | ### 使用限制 14 | 15 | - 系统 **永久免费** 使用,禁止通过任何个人或机构传播或销售。 16 | - 需提交设备特征码并绑定邮箱才能启动签到监控。使用繁琐,管理员还不耐烦解答。 17 | - 系统适用于签到、抢答,但不适用于打卡或晚点名等学习通其他类型。 18 | 19 | ### 使用目的 20 | 21 | - 本系统仅适用于教室网络过差无法正常签到、学习过程中不希望被签到打断学习节奏等场景下使用,禁止以逃课、旷课等行为作为使用目的,否则由用户非法行为造成的后果均由用户自行负责。 22 | 23 | ### 违规行为 24 | 25 | - 请勿连续点击页面中各功能按钮,否则可能会被系统认定网络攻击行为而封禁您的账号,当点击按钮后出现提示时请按提示进行操作,未出现提示且无其它响应时请添加官方QQ交流群反馈问题。 26 | - 由于邮件发送次数在一段时间内存在限制,严禁利用系统邮件发送功能短时间内大量发送邮件通知。 27 | - 由于地图平台每日地点查询配额存在上限,严禁利用设置位置信息功能进行大量查询。 28 | - 严禁利用签到系统接口进行恶意行为,违者给予账号封禁本站账号的处罚,由此造成的后果均由您自行负责。 29 | 30 | ## 系统功能概述 🚀 31 | 32 | ### 签到类型支持 33 | 34 | :::tip 35 | 截至到25年3月,二维码签到修改已经快两三年了,依旧没人能实现破解二维码实现免码直签,有这种想法的可以走了。 36 | ::: 37 | 38 | - 支持课程、班级签到,类型包括普通签到、拍照签到、手势签到、签到码签到、位置签到、二维码签到(二维码不支持全自动)。 39 | - 群聊签到支持普通、拍照、手势、位置和二维码签到等方式。 40 | 41 | ### 接口说明 42 | 43 | - 接口1可以和其它接口同时选择以便同时监控防止漏签(双接口模式),**推荐使用双接口,可最大程度避免漏签的可能**。 44 | - 接口1支持同时监控群聊签到、班级签到和课程签到,但少数课程由于教师设置问题可能无法使用接口1获取签到活动(这也是为什么推荐双接口的原因),其它接口仅支持监控班级签到和课程签到。 45 | - 同一签到活动接口1仅能获取一次,因此如若您在教师发布签到后使用接口1启动签到监控则可能无法获取教师已发布的签到活动,此时可以使用另外三个接口进行签到监控,使用接口1时请务必在教师发布签到前启动监控。 46 | - 接口1会在教师发布签到后立即获取到签到信息,因此为了避免签到过快所带来的问题,接口1在签到时会有至少10秒延迟。其它接口需要不断请求学习通服务器来获取最新的签到活动,因此为尽可能防止接口请求过于频繁,使用接口2和接口3查询签到活动的频率为5分钟1次,使用接口4查询签到活动的频率为1分钟1次且仅在接口2和接口3出现频繁后才会切换接口4进行监控,暂不支持修改延迟时间和查询频率。 47 | 48 | ### 签到逻辑说明 49 | 50 | - 系统默认监控24小时内发布的所有签到活动,暂不支持自选发布时间范围进行签到监控。 51 | - 系统在不开启任何签到模式下默认为自动签到模式,此时签到逻辑遵循以下规则: 52 | - **普通签到**:直接进行自动签到。 53 | - **拍照签到**:使用用户在网站拍照图片集中配置的默认图片进行自动签到,如果用户没有配置默认图片则不提交拍照图片进行自动签到,教师端将不会显示用户的拍照图片。 54 | - **手势签到和签到码签到**:自动获取教师设置的手势或签到码,而且为防止教师未公布手势或签到码用户就成功签到,系统会持续监测签到人数,待有同学完成签到后再进行自动签到。 55 | - **普通位置签到**:指的是教师没有设置用户需在指定位置进行签到,此时将使用用户在网站位置信息集中配置的默认位置信息进行自动签到,如果用户没有配置默认位置信息则不提交位置信息进行自动签到,教师端会显示用户未提交位置信息。 56 | - **指定位置签到**:指的是教师设置了用户需在指定位置的某个范围内进行签到,此时会自动获取教师指定签到位置,并使用教师指定的位置信息进行自动签到。 57 | - **二维码签到**:使用微信小程序扫码后才可自动签到,若教师指定了签到位置则会自动获取教师指定签到位置,并使用教师指定的位置信息进行自动签到,详细教程见[二维码签到板块](qr-sign.html)。 58 | - **群聊签到**:系统将自动检测签到类型,由于群聊二维码签到可自动获取二维码,因此签到规则与手势签到和签到码签到的规则一致,其它群聊签到类型签到规则与上述同类型签到规则一致。 59 | - 若开启了签到模式则签到模式的签到逻辑优先于默认签到逻辑,签到模式具体介绍见[签到模式说明](#签到模式说明)。 60 | 61 | ### 签到模式说明 62 | 63 | :::tip 64 | 签到模式非必选项且可多选,适用于有特殊需求的用户。 65 | ::: 66 | 67 | - **手动签到模式**:监测到非二维码签到时在网站日志和绑定的邮箱中返回一个签到链接,需访问该链接进行签到,该模式不能和反钓鱼签到模式同时开启,除此之外该模式还遵循以下规则: 68 | - 在签到类型为拍照签到或普通位置签到时可以在链接中自选在网站拍照图片集中配置的拍照图片或位置信息集中配置的位置信息。 69 | - 在不开启签到信息盗用模式的情况下可以查看已签用户的签到情况,在签到类型为拍照签到或普通位置签到时还可查看已签用户提交的拍照图片或位置信息(仅可查看,不能盗用)。 70 | - 在开启签到信息盗用模式的情况下,若签到类型为拍照签到或普通位置签到则可以查看已签用户提交的拍照图片或位置信息并自行选择要盗用的拍照图片或位置信息(此时无法选择使用自己在网站中设置的拍照图片或位置信息)。 71 | - **定时签到模式**:在指定时间段内进行签到监控,若用户所设置时间段不在当天0时至次日0时则不会计入当天的签到成功数量检查,即当天不受连续7天无签到成功记录自动停止签到监控的规则限制。 72 | - **定次签到模式**:设定自动签到成功次数,签到成功数量达到指定次数后自动停止签到监控。 73 | - **反钓鱼签到模式**:当已签到人数不低于未签人数时才自动签到,此模式用来应对老师的钓鱼签到(来上课的不签,没来上课的由于不知情就签了),此模式不能和手动签到模式同时开启。 74 | - **签到信息盗用模式**:在签到类型为拍照签到或普通位置签到时随机使用其他已签到同学的拍照图片或位置信息进行签到,此模式在与手动签到模式同时开启后可指定要盗用的信息,详见上方手动签到模式说明。 75 | 76 | ## 其它系统运行规则 ⚠️ 77 | 78 | - **监控规则**:为防止恶意行为,10分钟内启动或重启签到监控次数超过5次将会被禁止启动和重启签到监控10分钟,请勿频繁启动或重启签到监控。 79 | - **负载控制**:为减少官方节点夜间负载,在每日23时至次日6时接口2~4将暂停签到监控,每日0时至6时接口1将暂停签到监控。 80 | - **惩罚规则**:为了保证官方节点资源可以得到充分利用,用户使用官方节点启动签到监控后若连续7天无签到成功记录将自动停止签到监控,被停止后若第二日仍使用过官方节点且无签到成功记录则首次惩罚将禁用官方节点2天,后续再次触发惩罚禁用时间将依次递增2天,禁用天数每学期末重置。 81 | - **规则变更**:从2025年04月27日起开启了定时发放的签到在签到成功后将不再计入签到成功记录中,因此用户如果7天内没有非定时发放的签到的签到成功记录依旧会按上述惩罚规则被停止签到监控。 82 | - **故障切换**:官方节点故障且其它节点有余位的情况下将在三分钟后自动切换至其他节点,在其它节点无余位的情况下特权用户将自动切换至其它在线节点,非特权用户的签到监控将被暂停,待其它节点存在余位后再自动切换节点。 83 | - **候补规则**:候补功能仅限非特权用户使用,且仅在官方节点无余位或不可用时才可进行候补。使用候补功能需先绑定邮箱,若在候补过程中解绑则自动退出候补。 84 | - **切换规则**:当官方节点有余位时将为离线节点的用户优先切换,其次是候补用户,最后才会开放余位供其他用户自行选择使用。 85 | - **人数限制**:官方节点的默认容纳人数上限为1号4号7号节点300人,其它节点120人,默认最多容纳1500人。由于存在特权用户,实际容纳的人数可能高于默认上限人数。默认容纳人数上限后续不再更改。 86 | - **日志留存**:系统在进行签到监控产生的签到日志将会在每学期末进行审计,审计完成后自动删除。 87 | - **服务反馈**:系统尚处于测试阶段,只欢迎通过官方QQ交流群反馈 BUG,不提供使用指导。 88 | 89 | ## 复习一下? 90 | 91 | 担心使用须知没看明白?可以扫描小程序码,刷题检验自己有没有看完。 92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/guide/other.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 其他内容 3 | icon: iconfont icon-creative 4 | category: 5 | - Guide 6 | sticky: true 7 | star: true 8 | order: 90 9 | --- 10 | 11 | ## 打赏作者 12 | 13 | 14 | 15 | ## 广告位 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/guide/prerequisites.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 先决条件 3 | icon: iconfont icon-creative 4 | category: 5 | - Guide 6 | sticky: true 7 | star: true 8 | order: 2 9 | --- 10 | 11 | ## 提交设备特征码 12 | 13 | - 请确保使用 **自己的常用设备** 进行提交。 14 | - 不要与他人共用同一台设备进行提交,以免触发 “一台设备只能签到一次”。 15 | - 提交过程中需输入的验证口令为 **签到网站的完整链接**。 16 | 17 | ## 绑定邮箱 18 | 19 | - 用于通知,不可重复绑定。 20 | 21 | ## 关注公众号(非必做项) 22 | 23 | - 关注公众号【WAADRI】,并直接发送学习通手机号绑定,绑定后可通过答题领取取消弹窗强制等待时间的奖励。 24 | 25 | :::warning 26 | 不允许换绑,不支持同一微信绑定多个,否则账号功能将被限制。 27 | ::: 28 | -------------------------------------------------------------------------------- /docs/guide/qq.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: QQ群 3 | icon: iconfont icon-creative 4 | category: 5 | - Guide 6 | sticky: true 7 | star: true 8 | order: 50 9 | --- 10 | 11 | :::warning 12 | 加群前,请先阅读 [QQ 群内禁止询问的问题](../faq/no-ask.md),以免被禁言或请出群聊! 13 | ::: 14 | 15 | ## QQ 群 16 | 17 | - [QQ交流群1群](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=GEmCrtFOu3hkqXN7dP1vqyf1bowPAQMg&authKey=I92xzGmgnn979VMjLXhxEiTUEny1GqrQR5rBJNzup5QnduqDk3o3y0T3sQHBbCJn&noverify=0&group_code=914995724) 18 | - [QQ交流群2群](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=r3JjlvsmXifijkL3zakSCRHnk1b-kT1l&authKey=r4ejescLJXblHXxW01%2BEMzbQBlRFPSgv%2BsOr9bQgFb2JCFMJcir3Q%2FyK%2FOjj3nht&noverify=0&group_code=1009848497) 19 | - [QQ交流群3群](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=7orqNlnRWHbt0AcYHUbqGnzWn2etmbKd&authKey=uuWFv7VKB5LxyvHZ35uyYy6OxAZRpX75WsV7BBK1xvKxGzG9IET5MHHLvnEBwjcR&noverify=0&group_code=820878300) 20 | - [QQ交流群4群](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=h098pE0BYtqwdbXSYt2Rjcbtz42OuArM&authKey=b%2Bqu%2B8jvukd%2B%2FogOmKKOroZUCf6JGjEzbS07l9NuPyJGwXdikfXfyuBoR0vdYSkr&noverify=0&group_code=1026507639) 21 | -------------------------------------------------------------------------------- /docs/guide/qr-sign.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 二维码签到 3 | icon: iconfont icon-creative 4 | category: 5 | - Guide 6 | sticky: true 7 | star: true 8 | order: 8 9 | --- 10 | 11 | ## 如何通过 **辅助扫码小程序** 进行二维码签到? 12 | 13 | :::tip 14 | 学习通在线签到联盟成员已于2025年5月26日共同成立二维码共享联盟,联盟成员已实现签到二维码内部互通,使用联盟内任意成员的小程序提交签到二维码可同时共享给联盟其他成员的用户 15 | 16 | 学习通在线签到联盟已于2025年5月28日同小北云达成合作,小北云用户提交的签到二维码将共享给联盟内成员的用户 17 | ::: 18 | 19 | 二维码上传小程序 20 | 21 | ### 为什么不能用过期二维码了? 22 | 23 | 由于学习通在2023-04-08更新了二维码刷新逻辑,在此之后提交过期二维码已无法进行自动签到。 24 | 25 | ### 怎么做? 26 | 27 | :::warning 28 | 必须提前启动签到监控,并在系统监测到签到之后再扫。 29 | ::: 30 | 31 | 扫码者无需绑定用户账号,使用谁的手机都可以扫,班上所有使用本站签到系统的人都会一起签。 32 | 33 | 如果二维码会变化,勾上“二维码定时刷新”多扫几次,防止网络延迟导致二维码过期。 34 | 35 | ### 怎么测试? 36 | 37 | 让同学创建课程,你加进去演习一下。 38 | 39 | ## 视频教程 40 | 41 | 44 | 45 | ## 详细步骤 46 | 47 | + 在系统中启动签到监控,待监测到二维码签到并提示扫码后再使用小程序扫码 48 | + 若教师设置二维码自动更新则请勾选“二维码定时刷新”选项多扫几次签到二维码以防止由于二维码过期签到失败的情况。 49 | + 若教师没有设置二维码自动更新则只扫一次签到二维码即可。 50 | + 若教师设置了指定签到位置,目前在线自动签到系统已经可以自动获取教师指定的位置,因此无需勾选“需要指定位置信息”选项,该选项仅作为后续学习通更新导致无法获取指定位置时的补救方案。 51 | + 扫码后请留意在线自动签到系统的签到日志或者邮件/微信通知,若签到成功则会通过邮件/微信发送签到成功通知,若签到失败则不会通知,可以使用这个特点来判断签到是否成功,如果没有通知则一直扫码直到发送签到成功通知为止。 52 | + 如果在系统为您签到前您自己已经自行签到了或者二维码签到已过期,此时系统也会发送签到失败或者签到过期的邮件/微信通知,并且后续继续使用小程序扫码系统也不会再为您签到了。 53 | 54 | 图示: 55 | 二维码上传小程序截屏 56 | -------------------------------------------------------------------------------- /docs/guide/third.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 第三方节点 3 | icon: iconfont icon-creative 4 | category: 5 | - Guide 6 | sticky: true 7 | star: true 8 | order: 5 9 | --- 10 | 11 | ## 第三方节点介绍 12 | 13 | 第三方节点是由用户使用 GitHub 开源脚本自行搭建的签到节点,用于签到服务。 14 | 15 | ## ⚠️ 风险提示 16 | 17 | 第三方节点在签到时需要发送学习通账号密码等敏感信息,构成以下风险: 18 | 19 | - 节点搭建者可能截获并查看这些信息。 20 | - 对您的账号和个人信息安全带来一定风险。 21 | - 第三方节点的安全性和可用性不受官方保证。 22 | 23 | ## 🔍 与官方节点的功能差异 24 | 25 | ### 通知方式 26 | 27 | - 第三方节点启动签到监控可以不绑定邮箱。 28 | - 若节点搭建者未设邮件发送功能,则无法通过邮箱收到通知。 29 | 30 | ### 功能支持 31 | 32 | - 不支持手动签到、反钓鱼签到、签到信息盗用模式。 33 | - 不支持使用接口4进行签到监控。 34 | 35 | ### 功能限制 36 | 37 | - 不支持检测群聊签到类型。 38 | - 所使用的签到信息爆破和解析服务器每日0时至6时暂停服务,在此期间监测到新的手势签到、签到码签到和指定位置签到将直接签到失败。 39 | - 在监测到手势签到或签到码签到时不会等待有同学签到后再签到而是直接签到。 40 | - 扫码小程序中的签到详情不显示使用第三方节点的用户。 41 | - 不支持节点离线后的自动更换。 42 | - 无7天内无签到自动停止监控的限制。 43 | 44 | ## 注意事项 45 | 46 | - 以上限制可能随着后续第三方节点服务的更新而改变。 47 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "waadri-docs", 3 | "version": "1.0.0", 4 | "description": "WAADRI 文档", 5 | "license": "AGPL-3.0", 6 | "type": "module", 7 | "scripts": { 8 | "docs:build": "vuepress build .", 9 | "docs:clean-dev": "vuepress dev . --clean-cache", 10 | "docs:dev": "vuepress dev .", 11 | "docs:update-package": "npx vp-update", 12 | "dev": "npm run docs:dev", 13 | "build": "npm run docs:build" 14 | }, 15 | "devDependencies": { 16 | "@vuepress/bundler-vite": "^2.0.0-rc.19", 17 | "@vuepress/plugin-docsearch": "^2.0.0-rc.74", 18 | "sass-embedded": "^1.86.0", 19 | "vue": "^3.5.13", 20 | "vuepress": "^2.0.0-rc.20", 21 | "vuepress-theme-hope": "^2.0.0-rc.74" 22 | } 23 | } -------------------------------------------------------------------------------- /resource/.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | tmp 3 | 4 | *.md 5 | *.sh 6 | LICENSE -------------------------------------------------------------------------------- /resource/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.12-alpine 2 | 3 | RUN apk add --update --no-cache python3 py3-pip tzdata ca-certificates \ 4 | && rm -rf /var/cache/apk/* \ 5 | && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ 6 | && echo Asia/Shanghai > /etc/timezone 7 | 8 | ENV IS_DOCKER=1 9 | 10 | VOLUME /data 11 | 12 | WORKDIR /data 13 | 14 | COPY ./requirements.txt /app/requirements.txt 15 | 16 | RUN pip config set global.trusted-host mirrors.cloud.tencent.com \ 17 | && pip install --upgrade pip --break-system-packages \ 18 | && pip install --user -r /app/requirements.txt --break-system-packages 19 | 20 | COPY . /app 21 | 22 | CMD ["sh", "-c", "python3 /app/main.py"] -------------------------------------------------------------------------------- /resource/Dockerfile.zh: -------------------------------------------------------------------------------- 1 | FROM python:3.12-alpine 2 | 3 | RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tencent.com/g' /etc/apk/repositories \ 4 | && apk add --update --no-cache python3 py3-pip tzdata ca-certificates \ 5 | && rm -rf /var/cache/apk/* \ 6 | && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ 7 | && echo Asia/Shanghai > /etc/timezone 8 | 9 | ENV IS_DOCKER=1 10 | 11 | VOLUME /data 12 | 13 | WORKDIR /data 14 | 15 | COPY ./requirements.txt /app/requirements.txt 16 | 17 | RUN pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple \ 18 | && pip config set global.trusted-host mirrors.cloud.tencent.com \ 19 | && pip install --upgrade pip --break-system-packages \ 20 | && pip install --user -r /app/requirements.txt --break-system-packages 21 | 22 | COPY . /app 23 | 24 | CMD ["sh", "-c", "python3 /app/main.py"] -------------------------------------------------------------------------------- /resource/replace.py: -------------------------------------------------------------------------------- 1 | REPLACES = { 2 | 'sign_location_info["address"]': 'os.getenv("HAPPY", sign_location_info["address"])', 3 | 'USER_LIST[uid]["address"]': 'os.getenv("HAPPY", USER_LIST[uid]["address"])', 4 | 'USER_LIST[uid]["objectId"]': 'os.getenv("PHOTO", USER_LIST[uid]["objectId"])', 5 | "https://cx-static.waadri.top/image/gh_3c371f2be720_1280.jpg": "https://cdn.micono.eu.org/image/小程序码/扫码签到.png", 6 | } 7 | 8 | 9 | with open("./main.py", "r") as f: 10 | code = f.read() 11 | 12 | for key, value in REPLACES.items(): 13 | code = code.replace(key, value) 14 | 15 | 16 | with open("./main.py", "w") as f: 17 | f.write(code) 18 | -------------------------------------------------------------------------------- /resource/requirements.txt: -------------------------------------------------------------------------------- 1 | aiohttp 2 | aiofiles 3 | aiosmtplib 4 | certifi 5 | pycryptodome 6 | requests 7 | tenacity 8 | websockets 9 | pyyaml -------------------------------------------------------------------------------- /resource/waadri.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Misaka-1314/SignNode-AutoBuild/bfa74c148a769928291c637b605284c9022240cd/resource/waadri.ico --------------------------------------------------------------------------------