一个用于体适能模拟运动的程序,包含完整的命令行管理系统。
- 在主菜单添加了更新人脸功能
- 新增了查询总里程功能
- 修复了修复了tsnRunServer.py中getFaceImage方法对API响应的错误处理
- 在主菜单添加了更新人脸功能
- 新增加了查询总里程功能
- 修复了修复了tsnRunServer.py中getFaceImage方法对API响应的错误处理
- 自动从服务器获取全国学校列表
- 按省份组织学校数据
- 区分公版(云端部署)和私版(私有部署)学校
- 自动过滤测试和演示学校
- 支持用户名/密码登录
- 自动适配学校类型(公版/私版)
- 安全存储认证信息
- 自动 Token 刷新机制
- 三种跑步类型:
- 晨跑 (Morning Run)
- 阳光跑 (Sun Run)
- 自由跑 (Freedom Run)
- 自定义跑步距离(0-50公里)
- 智能路径生成
- 真实运动模拟(速度变化、步数计算、暂停标记)
- 人脸验证支持(开始/中间/结束)
- 从历史运动记录爬取路径数据
- MongoDB 存储路径信息
- 地理空间索引优化查询
- 支持路径复用和优化
TiShiNengSdkBase (基础层)
├── 通用 HTTP 客户端
├── MD5 签名生成
└── 省份/学校查询 API
↓
TiShiNengSdkPrivate (私版层)
├── AES/RSA 加密支持
├── 学校特定端点
└── 人脸验证功能
↓
TiShiNengSdkPublic (公版层)
├── OAuth 2.0 认证
├── 高级加密(AES+RSA)
└── 安全环境检测
- 客户端工厂 (
tsnClient.py): 自动实例化正确的 SDK 类型 - 跑步服务器 (
tsnRunServer.py): 编排完整的跑步工作流 - 爬虫模块 (
spiderServer.py): 采集并存储历史路径 - 路径管理 (
TiShiNengRunPathManage.py): 路径生成
- Python 3.7+
- SQLite 或其他 SQL 数据库(用于账号管理)
pip install -r requirements.txt主要依赖包括:
httpx- 异步 HTTP 客户端pycryptodome- AES/RSA 加密sqlalchemy- 数据库 ORMloguru- 日志记录geopy- 地理位置处理pillow- 图像处理(人脸验证)
python main.py============================================================
TiShiNeng 管理系统
============================================================
1. 更新学校列表
2. 授权账号
3. 开始跑步
4. 爬取路径数据
5. 更新人脸图片
0. 退出系统
============================================================
-
更新学校列表 (选项 1)
- 从服务器获取最新的学校信息
- 自动保存到数据库
-
授权账号 (选项 2)
- 选择你的学校
- 输入用户名和密码
- 系统自动完成认证
-
开始跑步 (选项 3)
- 选择已授权的账号
- 选择跑步类型(晨跑/阳光跑/自由跑)
- 输入跑步距离
- 确认并开始执行
- 爬取路径数据 (选项 4)
- 选择账号
- 系统自动爬取该账号的历史运动记录
- 路径数据保存到 SQLite 供后续使用
请选择操作 (0-4): 3
============================================================
开始跑步
============================================================
请选择账号:
------------------------------------------------------------
1. 张三 - 北京大学
2. 李四 - 清华大学
------------------------------------------------------------
请输入账号编号 (0=取消): 1
已选择账号: 张三
请选择跑步类型:
------------------------------------------------------------
1. 晨跑 (Morning Run)
2. 阳光跑 (Sun Run)
3. 自由跑 (Freedom Run)
------------------------------------------------------------
请输入跑步类型编号 (0=取消): 2
已选择: 阳光跑
请输入跑步距离(公里,例如: 2.5): 3.0
跑步距离: 3.0km
============================================================
跑步任务信息:
账号: 张三
学校: 北京大学
类型: 阳光跑
距离: 3.0km
============================================================
确认开始跑步? (y/n): y
开始执行跑步任务...
✅ 跑步任务完成!
功能:
- 获取所有省份列表
- 遍历每个省份的学校
- 过滤演示和测试学校
- 获取公版学校的内网 URL
- 保存学校信息到数据库
代码位置: main.py:61-128
功能:
- 展示可用学校列表
- 用户选择学校
- 输入登录凭据
- 调用认证服务
- 保存认证信息
代码位置: main.py:129-199
认证流程:
用户输入 → 选择学校 → tsnPasswordAuthServer()
→ 自动判断公版/私版 → 调用对应 SDK → 返回 UID
功能:
- 选择已授权账号
- 选择跑步类型
- 设置跑步距离
- 执行完整跑步流程
代码位置: main.py:201-331
跑步流程:
初始化数据 → 人脸验证(开始)→ 路径生成
→ 中途人脸验证 → 上传运动记录 → 人脸验证(结束)
功能:
- 选择账号
- 爬取历史运动记录
- 提取路径数据
- 存储到 SQLite
代码位置: main.py:333-404
- 可选加密: 由
isOpenEncry标志控制 - 加密方式: AES + RSA
- 签名算法: MD5(sorted_params)
- 强制加密: 所有敏感操作
- 加密方式: 随机 AES 密钥 + RSA 加密密钥
- 签名算法: MD5(AES(sorted_params))
特点:
- 真实速度变化(在最小/最大速度范围内)
- 时间间隔模拟(800-950ms)
- 支持中途人脸验证点
- 全异步实现(
async/await) - 异步数据库操作
- 异步 HTTP 请求
- 并发任务支持
- 首次使用: 务必先更新学校列表
- 账号管理: 建议为每个学校授权独立账号
- 路径数据: 爬取足够的路径数据以提高真实性
- 距离设置: 输入合理的跑步距离(建议 1-10km)
- 错误处理: 查看日志文件排查问题
Q: 授权失败怎么办? A: 检查用户名密码是否正确,确认学校类型选择正确
Q: 路径生成失败? A: 先使用"爬取路径数据"功能采集该学校的路径
Q: 人脸验证失败? A: 确保数据库中有该账号的人脸图片数据
Q: 运行提示时间冲突? A: 系统会自动重试,等待一段时间后再执行
tsnOpenSourceVersion/
├── main.py # 主程序(命令行界面)
├── TiShiNengSdkBase.py # SDK 基础层
├── TiShiNengSdkPrivate.py # 私版 SDK
├── TiShiNengSdkPublic.py # 公版 SDK
├── tsnClient.py # 客户端工厂
├── tsnRunServer.py # 跑步服务器
├── spiderServer.py # 路径爬虫
├── TiShiNengRunPathManage.py # 路径管理
├── AesUtils.py # AES 加密工具
├── RsaUtils.py # RSA 加密工具
├── database.py # 数据库配置
├── models.py # 数据模型
├── requirements.txt # 依赖列表
└── README.md # 本文档
本项目基于GPL V3开源,仅供教育和研究使用。请勿用于任何非法或违规目的。
如有问题或建议,请通过 Issue 反馈。
免责声明: 本项目为逆向工程研究成果。使用者需自行承担使用本代码的一切责任。