当前位置: 首页 > news >正文

某智慧教育平台登录流程分析

本文档仅对某智慧教育平台登录过程进行了分析,并未提供相应js与py程序。

1. 获取 session_idsession_key
  • 程序名称: get_session_id_key.py

  • 功能: 执行此程序以获取后续流程所需的 session_idsession_key

  • 响应结构示例:

    {"session_id": "b8cc1dee-7cf7-477b-8e43-3698b01eb622","session_key": "LQxLBLZu","is_normal": true
    }
    

2. 获取 randstrticket 破解腾讯滑块验证码
  • 程序名称: get_ticket_randstr.py
  • 功能: 获取用于人机验证的 randstrticket 值。
  • 响应结构示例:
    {"errorCode": "0","randstr": "@6H5","ticket": "tr03G-Ln9nPHEpUq7QBwcLvCayfSmVxx-1zgux2aoXWW32wvCnWiXuIWNxAY8eaUY9OoAuuG3hnzD_aBpe1tzWkOyqoZHR99Y1Kp6XrGpgrGw3I35DZ_BFLTrPLYAA0zJUQnx4N-zoQiVRc*","traceId": "","errMessage": "","sess": ""
    }
    

3. 获取 identify_code
  • 程序名称: get_identify_code.py
  • 功能: 使用上一步获取的 ticketrandstr 来获取验证码 identify_code
  • 关键实现:
    • 在此程序中,需要动态拼接请求的 URL。
    • URL 模板: https://uc-gateway.ykt.eduyun.cn/v1.1/sessions/{session_id}/third_captcha_code/valid
    • 注意: URL中的 {session_id} 必须替换为第 1 步中获取的实际 session_id

4. 获取 sensorsdata2015jssdkcross
  • 程序名称: get_and_encode_sensorsdata2015jssdkcross.py

  • 功能: 获取用于神策数据分析的加密字符串 sensorsdata2015jssdkcross
    在这里插入图片描述

5. 加密登录凭证
  • 程序名称: get_loginname_password_zhitongpassword.py
  • 功能: 对用户的手机号和密码进行加密,生成最终登录请求所需的 login_namepasswordzhitong_password
  • 初始变量:
    • username = “你的手机号”
    • password = “你的登录密码”
    • zhitong_password = “你的登录密码此处与password的值是一样的”
  • 加密依赖: 加密计算过程中需要使用第 1 步获取的 session_key

6. 执行登录并获取 token
  • 程序名称: login_get_token.py
  • 功能: 整合所有前面步骤获取的参数,发起最终的登录请求,以获取 token
  • 所需参数:
    • session_id
    • login_name (加密后)
    • password (加密后)
    • identify_code
    • zhitong_password (加密后)
  • 请求参数结构示例:
    params = {"$proxy": "proxyhttp","bodys": "{\"$headers\":{\"Accept\":\"application/json\",""\"Content-Type\":\"application/json\",""\"SDP-APP-ID\":\"e5649925-441d-4a53-b525-51a2f1c4e0a8\",""\"UC-COLL\":\"e5649925-441d-4a53-b525-51a2f1c4e0a8/1.0(Win10;Chrome138;1707x961;JwWin10/Chrome138/7b50eb2c-8e5e-4bab-aa93-d1cf57205b5c;)\",""\"Host\":\"sso.basic.smartedu.cn\"},""\"$body\":{\"session_id\":\"前面获取的session_id\",""\"login_name\":\"加密后的用户名\",""\"password\":\"加密后的密码\",""\"identify_code\":\"前面获取的identify_code\",""\"zhitong_password\":\"前面加密后的密码,这个与登录密码加密方式不同\"},""\"$method\":\"post\"}","callback": "nd_uc_sdk_时间戳"
    }
    

关键输入与输出

步骤编号流程节点详细说明关键输入/依赖关键输出
1获取Sessionuc-gateway.ykt.eduyun.cn 服务器发送POST请求,以获取一次性的会话ID和加密密钥。这是所有后续加密操作的基础。device_id (一个固定的设备标识符)session_id, session_key
2破解腾讯滑块验证码模拟浏览器行为,完成腾讯防水墙的滑块验证。这个过程非常复杂,包括获取任务、计算PoW、生成浏览器指纹、识别滑块缺口距离(使用ddddocr)、并最终提交验证。requests会话 (保持Cookie)ticket, randstr
3获取Identify Code将上一步获得的ticketrandstr,连同第一步的session_id,发送到服务器进行校验,以换取一个内部验证码identify_codesession_id, ticket, randstridentify_code
4生成神策Cookie调用外部的Node.js脚本 (generate_sensors_data.js) 来模拟神策分析SDK的行为,生成一个用于追踪和风控的sensorsdata2015jssdkcross Cookie值。generate_sensors_data.js经过URL编码的Cookie字符串
5加密登录凭据使用第一步获取的session_key,对用户的login_namepasswordzhitong_password进行DES加密。关键点password的MD5哈希计算使用了latin-1编码来处理盐值中的特殊字符。session_key, 用户名, 密码加密后的凭据
6发起最终登录请求将前面所有步骤获得的数据(session_id, identify_code, 加密凭据, 神策Cookie等)打包成一个复杂的bodys参数,通过JSONP的方式发送给登录接口。所有之前步骤的输出服务器返回的原始Token响应
7转换并保存Token这是登录成功的后续处理,也是最关键的一步。原始Token响应, session_key最终的smartedu_token.json文件
7a解密$body从登录响应中提取$body对象,并使用session_key解密其中的user_idmac_key字段。session_key, $body对象包含明文敏感信息的Token对象
7b计算diff字段检查解密后的Token对象是否存在diff字段。如果不存在,则根据server_time和当前本地时间计算出差值并添加到对象中。这是确保后续API签名正确的关键。解密后的Token对象包含diff字段的完整Token对象
7c序列化和计算过期时间将完整的Token对象转换为一个紧凑的JSON字符串(作为value),并从expires_at字段计算出毫秒级时间戳(作为expire)。完整的Token对象value字符串, expire时间戳
7d生成.json文件valueexpire写入smartedu_token.json文件,格式严格遵循下载程序的要求。value字符串, expire时间戳smartedu_token.json文件
http://www.dtcms.com/a/334542.html

相关文章:

  • 元宇宙娱乐:重构数字时代的沉浸式体验
  • 嵌入式 Linux LED 驱动开发实验
  • RK3568 NPU RKNN(五):RKNN-ToolKit-lite2板端推理
  • 要导入StandardScaler类进行数据标准化,请使用以下语句:
  • JavaScript学习第十章-第三部分(dom)
  • B3865 [GESP202309 二级] 小杨的 X 字矩阵(举一反三)
  • C#计算阶乘程序改进
  • C# 元组的用法
  • Nona生命之树作品TRO突袭,冻结名单曝光
  • Vue2.x核心技术与实战(一)
  • 摩搭api 实现
  • 025 理解文件系统
  • 多机编队——(6)解决机器人跟踪过程中mpc控制转圈问题
  • 第四章 Linux实用操作
  • OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制
  • 【LeetCode题解】LeetCode 35. 搜索插入位置
  • [Linux] Linux逻辑卷管理
  • 知识点汇总linuxC高级 -2系统命令压缩与链接
  • RK3568 NPU RKNN(三):RKNN-ToolKit2模型构建与推理
  • 【LeetCode】算法详解#13 ---回文链表
  • Vue 3.5重磅更新:响应式Props解构,让组件开发更简洁高效
  • [Linux] Linux交换空间管理 Linux系统启动原理
  • 慧穗云开放平台 CDK 开票对接
  • echart中x的0位置出现柱子宽度被裁掉一部分的问题
  • 技术日记2025年08月16日
  • 基于FPGA的实时图像处理系统(1)——SDRAM回环测试
  • python---异常处理
  • Redis知识整理
  • 【论文笔记】STORYWRITER: A Multi-Agent Framework for Long Story Generation
  • 云服务平台主流架构的相关知识体系剖析