zhongxinghong / PKUAutoElective

北大选课网补退选阶段自动选课小工具
MIT License
668 stars 231 forks source link

刷课机退掉了我一半的课??太可怕了! #30

Closed cbwang2016 closed 4 years ago

cbwang2016 commented 4 years ago

我已经哭死了。。。 逻辑导论本身都刷上了,又给退了...真的太可怕了 麻烦作者好好检查一下有没有bug...

Check List

Version / Environment

System infomation: [Windows10 64bit] ( Windows10 64bit, MacOS 10.13.6, Ubuntu 18.04.3 amd64, ... ) Python version: [Python 3.7.4 ] ( run python3 --version ) AutoElective version: [3.0.8] ( run python3 main.py --version )

Config

除了学号/密码外的其他配置 supply_cancel_page = 1 refresh_interval = 0.1 random_deviation = 0.2 iaaa_client_timeout = 20 elective_client_timeout = 20 elective_client_pool_size = 1 login_loop_interval = 1 debug_print_request = false debug_dump_request = false [monitor] ; host str ; port int host = 127.0.0.1 port = 7074

[course:bug_1]

name = 数据结构与算法 (B) class = 1 school = 地球与空间科学学院

Issue Description

不知道为什么,开启刷课机过了一段时间之后,就把我一半的课退掉了。

What

不知道为什么,开启刷课机过了一段时间之后,就把我一半的课退掉了。

Console Log

由于Windows终端行数限制,Log被刷上去之后丢失了

Reproduce

如有必要,提供复现的步骤

xmcp commented 4 years ago

看洞里有人说用chrome插件的刷课机也出了问题? 这个repo的代码看起来没啥大问题,我推测可能是elective自己有一些race condition之类的bug,在访问频繁的时候容易出问题。 如果是这样的话,调低刷新频率可能有帮助。

cbwang2016 commented 4 years ago

@xmcp 那请问你觉得多大的刷新频率合适呢?我也早就猜测elective的race condition可能会导致退课了,elective线程不安全有很多明显的特征……结果没想到真的发生在了我身上,哎………………

zhongxinghong commented 4 years ago

按照 parser.py 应该是解不出 退选 的 DOM 的,除非选课网有bug或者lxml有bug,至少至今我不清楚这个问题在哪(如果它真的发生了)

cbwang2016 commented 4 years ago

@zhongxinghong 不一定是parser.py的问题,elective很多时候给出100/0和100/200这种选课人数,就是明显的unsafe证据……

zhongxinghong commented 4 years ago

那只能说是选课网的问题,没有日志的话我也没法分析错误在哪... 去年有人确实刷错过班,这个可能是因为选课网race,但是没有dump response我也分析不了,只能给出一种假象的猜测... 此外我在新版加了对 180/0 这种情况选课时的错误捕获,并且会在文件 error log 里记录这个错误,如果它真的发生了,你应该能在日志里找到它

pkulirunze commented 4 years ago

同学您好,我们是《北大青年》的记者,正在关注刷课机相关问题。请问您是否愿意接受我们的采访,向我们提供更多有关信息呢?