Skip to content

dispose0335/TiShiNengRunning

Repository files navigation

用脚本之前请务必保证手机上的账号退出,并在一段时间内不要登录手机!

体适能 模拟跑步

一个用于体适能模拟运动的程序,包含完整的命令行管理系统。

功能更新和bug修复

  • 在主菜单添加了更新人脸功能
  • 新增了查询总里程功能
  • 修复了修复了tsnRunServer.py中getFaceImage方法对API响应的错误处理

功能特性

功能更新和bug修复

  • 在主菜单添加了更新人脸功能
  • 新增加了查询总里程功能
  • 修复了修复了tsnRunServer.py中getFaceImage方法对API响应的错误处理

1. 学校管理

  • 自动从服务器获取全国学校列表
  • 按省份组织学校数据
  • 区分公版(云端部署)和私版(私有部署)学校
  • 自动过滤测试和演示学校

2. 账号授权

  • 支持用户名/密码登录
  • 自动适配学校类型(公版/私版)
  • 安全存储认证信息
  • 自动 Token 刷新机制

3. 跑步功能

  • 三种跑步类型
    • 晨跑 (Morning Run)
    • 阳光跑 (Sun Run)
    • 自由跑 (Freedom Run)
  • 自定义跑步距离(0-50公里)
  • 智能路径生成
  • 真实运动模拟(速度变化、步数计算、暂停标记)
  • 人脸验证支持(开始/中间/结束)

4. 路径爬取

  • 从历史运动记录爬取路径数据
  • 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 - 数据库 ORM
  • loguru - 日志记录
  • geopy - 地理位置处理
  • pillow - 图像处理(人脸验证)

使用指南

启动程序

python main.py

主菜单选项

============================================================
  TiShiNeng 管理系统
============================================================
1. 更新学校列表
2. 授权账号
3. 开始跑步
4. 爬取路径数据
5. 更新人脸图片
0. 退出系统
============================================================

基本工作流程

第一次使用

  1. 更新学校列表 (选项 1)

    • 从服务器获取最新的学校信息
    • 自动保存到数据库
  2. 授权账号 (选项 2)

    • 选择你的学校
    • 输入用户名和密码
    • 系统自动完成认证
  3. 开始跑步 (选项 3)

    • 选择已授权的账号
    • 选择跑步类型(晨跑/阳光跑/自由跑)
    • 输入跑步距离
    • 确认并开始执行

高级功能

  1. 爬取路径数据 (选项 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

开始执行跑步任务...
✅ 跑步任务完成!

核心功能

1. 学校列表更新 (update_school_list)

功能:

  • 获取所有省份列表
  • 遍历每个省份的学校
  • 过滤演示和测试学校
  • 获取公版学校的内网 URL
  • 保存学校信息到数据库

代码位置: main.py:61-128

2. 账号授权 (authorize_account)

功能:

  • 展示可用学校列表
  • 用户选择学校
  • 输入登录凭据
  • 调用认证服务
  • 保存认证信息

代码位置: main.py:129-199

认证流程:

用户输入 → 选择学校 → tsnPasswordAuthServer()
→ 自动判断公版/私版 → 调用对应 SDK → 返回 UID

3. 开始跑步 (start_running)

功能:

  • 选择已授权账号
  • 选择跑步类型
  • 设置跑步距离
  • 执行完整跑步流程

代码位置: main.py:201-331

跑步流程:

初始化数据 → 人脸验证(开始)→ 路径生成
→ 中途人脸验证 → 上传运动记录 → 人脸验证(结束)

4. 路径爬取 (crawl_paths)

功能:

  • 选择账号
  • 爬取历史运动记录
  • 提取路径数据
  • 存储到 SQLite

代码位置: main.py:333-404

技术细节

加密机制

私版 SDK

  • 可选加密: 由 isOpenEncry 标志控制
  • 加密方式: AES + RSA
  • 签名算法: MD5(sorted_params)

公版 SDK

  • 强制加密: 所有敏感操作
  • 加密方式: 随机 AES 密钥 + RSA 加密密钥
  • 签名算法: MD5(AES(sorted_params))

路径生成算法

特点:

  • 真实速度变化(在最小/最大速度范围内)
  • 时间间隔模拟(800-950ms)
  • 支持中途人脸验证点

异步架构

  • 全异步实现(async/await
  • 异步数据库操作
  • 异步 HTTP 请求
  • 并发任务支持

注意事项

安全性

⚠️ 教育用途: 本项目仅供学习和研究使用

⚠️ 加密密钥: 代码中的 RSA 公钥和 AES 密钥仅为示例

⚠️ API 端点: 代码中的 URL 已替换为示例值

最佳实践

  1. 首次使用: 务必先更新学校列表
  2. 账号管理: 建议为每个学校授权独立账号
  3. 路径数据: 爬取足够的路径数据以提高真实性
  4. 距离设置: 输入合理的跑步距离(建议 1-10km)
  5. 错误处理: 查看日志文件排查问题

常见问题

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 反馈。


免责声明: 本项目为逆向工程研究成果。使用者需自行承担使用本代码的一切责任。

About

体适能跑步破解,支持人脸,支持新旧两个版本,完整的线路轨迹代码

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages