吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 451|回复: 23
上一主题 下一主题
收起左侧

[Python 原创] 查看《好·分·数》平台的成绩

  [复制链接]
跳转到指定楼层
楼主
jingtiaopi 发表于 2024-11-15 17:09 回帖奖励
本帖最后由 jingtiaopi 于 2024-11-22 16:31 编辑

因为外甥女期中考试结束,作为舅舅的我在打电话的时候,顺便问了一嘴考试咋样(作为过来人,明知孩子最烦问这个,但还是想知道考得咋样,明年就中考了。。。)。得知学校使用了《好分数》这个平台,不充会员就看不了分数,只显示一个等级。心里很不爽,但懒惰的我第一个想法就是来52找找有没有成品。找到了本站作者 @nuz 的好分数.exe,直接赠送爱币、热心值,下载体验一番,可惜了一直报错“无效的用户密码或无互联网链接”。因 qfluentwidgets 这个库一直安装不成功没法调试,只能自己动手了。

现提供可直接运行的 Windows 版本,界面粗糙了些,只是在虚拟机下的 Windows10 系统上测试没有问题。但有个问题是在 Windows 环境下,数据库保存不了用户名和密码,目前每次打开软件之后都需要重新输入(Mac 下不好调试,我再研究下,实在不行改为存文件吧)。


https://www.123684.com/s/EgIvTd-GGgk3?提取码:52pj

[Python] 纯文本查看 复制代码
'''
--- 本程序仅查看《好·分·数》的总成绩、各科目分数
--- 因学校使用了好·分·数平台查分等其他功能,这本该学校义务提供的事项现在只能花钱才能获取,(有点想 TM M人 -_-#)
--- 参考本站作者 @nuz 的成品 好分数.exe,可惜接口有问题,一直提示"无效的用户密码或无互联网链接"。拉取代码调试一下吧
--- 结果 qfluentwidgets 这个库一直安装不成功,无奈...
--- 移动端的可降级 app,我看的 V3.10.0 的版本,可直接显示分数
--- 先暂且提供源码吧,后续增加 UI(看看大家的意见) 和其他功能(可行的话),另外后续还会再提供 iOS 版本的快捷指令
--- 本代码仅供学习与参考,不做其他非法用途
--- ⚠️ 温馨提示:需要修改以下 'userName' 和 'password' 字段的内容
'''
import requests
from base64 import b64encode

class Hfx(object):
    def __init__(self):

        # TODO: 修改登录好分数平台的用户名、密码
        self.user = {
            # 手机号 or 邮箱 (邮箱账号未验证)
            'userName': '',
            'password': ''
        }
        self.userInfo = {}
        self.cookies = {
            'hfs-session-id': ''
        }
        self.headers = {
            'Accept': 'application/json, text/plain, */*',
            'Content-Type': 'application/json;charset=UTF-8',
            'Origin': 'https://www.haofenshu.com',
            'Referer': 'https://www.haofenshu.com/',
            'Sec-Fetch-Dest': 'empty',
            'Sec-Fetch-Mode': 'cors',
            'Sec-Fetch-Site': 'cross-site',
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
            'deviceType': '3',
            'sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"macOS"',
        }
        self.base_url = 'https://hfs-be.yunxiao.com'

    def login(self):
        json_data = {
            'loginName': self.user['userName'],
            'password': b64encode(hfx.user['password'].encode('utf-8')).decode('utf-8'),
            'roleType': 2,
            'loginType': 1,
            'rememberMe': 2,
        }

        response = requests.post(f'{self.base_url}/v2/users/sessions', cookies=self.cookies, headers=self.headers,
                                 json=json_data).json()
        if response['code'] == 0:
            self.userInfo = response['data']
            token = self.userInfo['token']
            self.cookies['hfs-session-id'] = token
            self.headers['Hfs-Token'] = token
            self.getUserSnapshot()
        else:
            print(response['msg'])

    def getUserSnapshot(self):
        response = requests.get(f'{self.base_url}/v2/user-center/user-snapshot', cookies=self.cookies,
                                headers=self.headers).json()
        if response['code'] == 0:
            linkedStudent = response['data']['linkedStudent']
            keys = list(linkedStudent.keys())
            for key in keys:
                self.userInfo[key] = linkedStudent[key]
            print(f'{self.userInfo["studentName"]} --- {self.userInfo["schoolName"]}·{self.userInfo["sgrade"]}'
                  f'{self.userInfo["className"]}班')
            self.getExamList()
        else:
            print(response['msg'])

    def getExamList(self):
        params = {
            'start': '-1'
        }
        response = requests.get(f'{self.base_url}/v3/exam/list', params=params, headers=self.headers).json()
        if response['code'] == 0:
            data = response['data']
            list = data['list']
            print(f'\n{data["limitTip"]}\n')
            for paper in list:
                self.getOverviewExam(paper['examId'])
        else:
            print(response['msg'])

    def getOverviewExam(self, examId): # 2299726
        response = requests.get(f'{self.base_url}/v3/exam/{examId}/overview', cookies=self.cookies,
                                headers=self.headers).json()
        if response['code'] == 0:
            data = response['data']
            papers = data['papers']

            print(f'● 年级总人数:{data["gradeStuNum"]}人 \t 班级总人数:{data["classStuNum"]}人')
            print('-----------------------------------')
            print(f'● {data["name"]}\n')
            # print(f'\t得分:{data["score"]}分/{data["manfen"]}分,得分评级:{data["scoreS"]},'
            #       f'班级排名:{data["classRank"]}(仅作参考,不准),班级评级:{data["classRankS"]}')
            print(f'\t得分:{data["score"]}分/{data["manfen"]}分,得分评级:{data["scoreS"]},班级评级:{data["classRankS"]}')
            for paper in papers:
                print(f'\t{paper["name"]}\t\t{paper["score"]}分/{paper["manfen"]}分,得分评级:{paper["scoreS"]}')
            print('\n\n')

        else:
            print(response['msg'])

if __name__ == '__main__':
    hfx = Hfx()
    hfx.login()

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
a655400love + 1 + 1 鼓励转贴优秀软件安全工具和文档!
5loveme + 1 高手就是高手。
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
gaoxiaoao 发表于 2024-11-15 17:48
感谢楼主分享,有技术再给大外甥整一个考试题库。。。。
3#
最新的 发表于 2024-11-15 18:04
4#
vikin963 发表于 2024-11-15 18:13
5#
popofeng 发表于 2024-11-15 18:57
我也想有个这样有技术的好舅舅。
6#
zpwz 发表于 2024-11-15 20:28
好分数:只有好分数,才会急于知晓好分数
7#
vv168888 发表于 2024-11-15 20:35

我也想有个这样有技术
8#
zyqking 发表于 2024-11-15 20:43
有技术篡改成绩,给大外甥整个高分
9#
 楼主| jingtiaopi 发表于 2024-11-15 20:56 |楼主
gaoxiaoao 发表于 2024-11-15 17:48
感谢楼主分享,有技术再给大外甥整一个考试题库。。。。

那我这个舅舅就彻底不认了
10#
 楼主| jingtiaopi 发表于 2024-11-15 20:56 |楼主
最新的 发表于 2024-11-15 18:04
好分数:我们已经在修复了

哈哈哈 且用且珍惜
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表