VermiIIi0n / fuckZHS

自动刷智慧树课程的脚本
MIT License
681 stars 81 forks source link

[BUG] qrlogin 无法显示二维码且运行报错无效指针和核心转储 #5

Closed ghost closed 2 years ago

ghost commented 2 years ago

描述问题 请详细清晰地描述问题

  1. 二维码在终端下无法显示
    • 可能是我的问题,img.show() 方法无效,我改用 img.save() 保存到本地扫码了
  2. 登陆成功、返回课程信息后报错无效指针和核心转储

如何复现 您遇到问题前进行了什么操作:

  1. 扫码登陆
  2. 运行脚本
  3. 报错退出

截图 如果可以的话,请附上截图.

image image2

您的操作系统和所使用的本代码版本

错误日志 请附上您认为重要的日志,不能判断的话请附上完整日志. 最好有 DEBUG 级别日志(使用参数 -d 或在配置文件中更改日志等级)

报错信息

➜  fuckZHS-v2.3.1 python main.py -d
*****************************
DEBUG MODE ENABLED
SENSITIVE DATA WILL BE LOGGED
*****************************

Scan QR code
QR Scanned
One-time code received
Login Successful

Traceback (most recent call last):
  File "/home/kimjungwha/Downloads/fuckZHS-v2.3.1/main.py", line 125, in <module>
    fucker.fuckWhatever()
  File "/home/kimjungwha/Downloads/fuckZHS-v2.3.1/fucker.py", line 208, in fuckWhatever
    zhidao_ids = [c.secret for c in self.getZhidaoList()]
  File "/home/kimjungwha/Downloads/fuckZHS-v2.3.1/fucker.py", line 268, in getZhidaoList
    r = self.zhidaoQuery(url, data, key=HOME_KEY).result
  File "/home/kimjungwha/Downloads/fuckZHS-v2.3.1/fucker.py", line 508, in zhidaoQuery
    raise e
Exception: code: 200 msg: {
    "result": {
        "totalCount": 16,
        "courseOpenDtos": [
            {
                "courseId": 1000002479,
                "courseName": "创业意识与商机识别",
                "courseImg": "https://image.zhihuishu.com/zhs/zhihuishu_creatCourse_h5/SOURCENAME/202108/7e1cb3483bf740ebb06514c3c2add216.jpg",
                "teacherName": "曾秀臻",
                "lessonName": "创业机会导航第三步:敏捷聚焦标靶",
                "lessonNum": "5.3.4",
                "progress": "100.0%",
                "recruitId": 101943,
                "lessonId": null,
                "courseCount": null,
                "schoolName": "深圳职业技术学院",
                "secret": "4b585851415a4859454a585958475d4451",
                "courseStartTime": 1652198400000,
                "courseEndTime": 1659283199000,
                "status": 0,
                "courseStatus": 2,
                "courseType": 1
            },
            {
                "courseId": 1000067077,
                "courseName": "新时代大学生劳动教育",
                "courseImg": "https://image.zhihuishu.com/zhs/zhihuishu_creatCourse_h5/SOURCENAME/202109/5cfa7cab829445f28a827c4628c64cae.jpg",
                "teacherName": "叶耀辉",
                "lessonName": "安全线上的守护神",
                "lessonNum": "9.3",
                "progress": "100.0%",
                "recruitId": 100690,
                "lessonId": null,
                "courseCount": null,
                "schoolName": "江西中医药大学",
                "secret": "4b58595e4c594859454a58595e4259445f",
                "courseStartTime": 1652198400000,
                "courseEndTime": 1659283199000,
                "status": 0,
                "courseStatus": 2,
                "courseType": 1
            },
            {
                "courseId": 1000007722,
                "courseName": "计算机文化基础(西安航空学院)",
                "courseImg": "https://image.zhihuishu.com/zhs/createcourse/course/201812/dec7078507704fcaafdcf3297b17149e.png",
                "teacherName": "任静",
                "lessonName": null,
                "lessonNum": null,
                "progress": "100.0%",
                "recruitId": 114233,
                "lessonId": null,
                "courseCount": null,
                "schoolName": "西安航空学院",
                "secret": "4b595d5a465a4859454a585958425e415a",
                "courseStartTime": 1650470400000,
                "courseEndTime": 1659715199000,
                "status": 0,
                "courseStatus": 2,
                "courseType": 1
            },
            {
                "courseId": 1000006248,
                "courseName": "大学生心理健康",
                "courseImg": "https://image.zhihuishu.com/zhs/ablecommons/demo/202010/2cd40e4e0f7a42b4a94bf9da09a9477f.jpg",
                "teacherName": "杨振斌",
                "lessonName": null,
                "lessonNum": null,
                "progress": "100.0%",
                "recruitId": 116787,
                "lessonId": null,
                "courseCount": null,
                "schoolName": "吉林大学、北京大学、清华大学、北京师范大学、中山大学、南京大学/ 跨校共建",
                "secret": "4b595f5f4d5e4859454a585958435b4750",
                "courseStartTime": 1650470400000,
                "courseEndTime": 1659715199000,
                "status": 0,
                "courseStatus": 2,
                "courseType": 1
            },
            {
                "courseId": 1000006582,
                "courseName": "大学生安全文化",
                "courseImg": "https://image.zhihuishu.com/zhs/createcourse/course/201707/1986830d35644670bbd8b01ec58efbb9.jpg",
                "teacherName": "吴超",
                "lessonName": "常用个体防护装备(二)",
                "lessonNum": "5.4.2",
                "progress": "100.0%",
                "recruitId": 116315,
                "lessonId": null,
                "courseCount": null,
                "schoolName": "中南大学",
                "secret": "4b595f5b445c4859454a585958435c4b5a",
                "courseStartTime": 1650470400000,
                "courseEndTime": 1659715199000,
                "status": 0,
                "courseStatus": 2,
                "courseType": 1
            }
        ]
    },
    "code": 200,
    "message": null
}
free(): invalid pointer
[1]    28583 IOT instruction (core dumped)  python main.py -d
VermiIIi0n commented 2 years ago

感谢反馈🌞, 似乎有些共享课 API 发生变化了, 因为是好久没用, 今天发现没法登陆才紧急修改的, 不好意思了没怎么测试. 校内课不受影响, 但共享课得花点时间改改了.

但是貌似那些问题按理不会引发这么严重的异常, 说不定还有bug吧...

ghost commented 2 years ago

感谢反馈sun_with_face似乎有些共享课 API 发生了变化,是久没用,发现学校内课才紧急怎么修改的,不好意思测试 了。

收到,谢谢大佬维护🫠,昨天使用还正常,应该是昨晚到今天四点智慧树维护时更新的

ghost commented 2 years ago

感谢反馈sun_with_face, 似乎有些共享课 API 发生变化了, 因为是好久没用, 今天发现没法登陆才紧急修改的, 不好意思了没怎么测试. 校内课不受影响, 但共享课得花点时间改改了.

但是貌似那些问题按理不会引发这么严重的异常, 说不定还有bug吧...

bug 的话。。。可能吧 上一个版本也会登陆后也会抛出登陆信息然后退出,是对比 http code 这里,我注释了就正常了,这回这个核心转储我也不太明白 方便的话我可以提供帐号密码测试

        if ok_code is not None and ret.code != ok_code:
            ret.default = None
            e = Exception(f"code: {ret.code} "+
                          f"msg: {ret.message or json.dumps(ret,indent=4,ensure_ascii=False)}")
            logger.error(e)
            raise e
VermiIIi0n commented 2 years ago

谢谢! 不过我这边没有报core dump的错误, 只是因为API更新不兼容报了错.

ghost commented 2 years ago

大佬你的环境是哪个系统啊?API 问题是不是下个版本就能解决😚

VermiIIi0n commented 2 years ago

我在 macOS 12.4 ARM64 和 Ubuntu 22.04 X64 下测试没问题

下个版本就改 API, 争取明天搞定, ~但愿他们没改AES密匙, 逆向太痛苦了😭~

*Edit: 嗯,他们改了💩

ghost commented 2 years ago

我在 macOS 12.4 ARM64 和 Ubuntu 22.04 X64 下测试没问题

下个版本就改 API, 争取明天搞定, 但愿他们没改AES密匙, 逆向太痛苦了sob

okok,谢谢大佬,这个不着急,我换环境测试下

ghost commented 2 years ago

我在 macOS 12.4 ARM64 和 Ubuntu 22.04 X64 下测试没问题

下个版本就改 API, 争取明天搞定, ~但愿他们没改AES密匙, 逆向太痛苦了sob~

*Edit: 嗯,他们改了hankey

收到,无效指针和核心转储的问题解决了,原因是 Pillow 的 BUG,在 8.1.1 版本修复 我因为没有启用虚拟环境,版本用的还是 7.2.0,更新版本就正常了

ghost commented 2 years ago

经过测试,依然是登陆后抛出异常退出。。。这是我的问题吗 注释了 fucker.py 508-513 行运行正常

if ok_code is not None and ret.code != ok_code: 
    ret.default = None
    e = Exception(f"code: {ret.code} "+
                  f"msg: {ret.message or json.dumps(ret,indent=4,ensure_ascii=False)}")
    logger.error(e)
    raise e
VermiIIi0n commented 2 years ago

那段是检查json返回码的,按理说正常情况返回0,我昨晚全测了一遍但没报错。麻烦发下报错时最后请求的接口吧,应该就是debug日志里的最后一条

关于QR无法显示的问题之后我想个别的解决方法

VermiIIi0n commented 2 years ago

经过测试,依然是登陆后抛出异常退出。。。这是我的问题吗 注释了 fucker.py 508-513 行运行正常

if ok_code is not None and ret.code != ok_code: 
    ret.default = None
    e = Exception(f"code: {ret.code} "+
                  f"msg: {ret.message or json.dumps(ret,indent=4,ensure_ascii=False)}")
    logger.error(e)
    raise e

已更新到分支 暂时禁用返回码检查了, 麻烦看看QR能不能正常显示?

ghost commented 2 years ago

经过测试,依然是登陆后抛出异常退出。。。这是我的问题吗 注释了 fucker.py 508-513 行运行正常

if ok_code is not None and ret.code != ok_code: 
    ret.default = None
    e = Exception(f"code: {ret.code} "+
                  f"msg: {ret.message or json.dumps(ret,indent=4,ensure_ascii=False)}")
    logger.error(e)
    raise e

已更新到分支 暂时禁用返回码检查了, 麻烦看看QR能不能正常显示?

  1. 二维码正常,不好意思是我没说清楚,更新了 Pillow 版本后 img.show() 正常了,那个新分支就算了,二维码占了半个屏幕,太大了,扫不上😂
  2. 这是完整的log,传输口令:ekh1ox
  3. 不行的话可以找个远程桌面,来用我的环境跑
VermiIIi0n commented 2 years ago

感谢支援, 好人一生平安😭

abai2020 commented 2 years ago

二维码过期,请重新扫描 现在扫不上了

Miku-039 commented 2 years ago

二维码过期,请重新扫描 现在扫不上了

有没有这样一种可能, 是因为 “二维码过期“ 了🌚

超过五分钟没扫就会这样, 重开吧