天平教务 调查|谁抢了我的课( 二 )


但选课网也对刷课行为设定了防护,短时间内多次点击“选课”的操作会被后台判定为刷课机,系统将发出提示并退出登录,用户必须重新登录才能继续选课。但因为设置了刷新间隔,多数刷课机不会产生上述违规行为,当前的防护水平主要防止了刷课机高频率选课操作干扰系统正常运行。
随着刷机功能的日益强大,批评和质疑也逐渐增多。随着“退课事件”的发生,关于刷机安全性和稳定性的争议成为焦点。
“退课漏洞”和刷新间隔
2月19日,树洞里有很多帖子说选的课被刷课机拒绝了。一天后,用户cbwang2016对PKUAutoElective项目进行了反馈,称“开启刷机一段时间后,他的课掉了一半”,并上传了系统环境和配置信息。

△树洞#1192621
宋睿曾使用过该程序,并亲自检查了源码。由于未在程序中发现可以导致退课的代码,他怀疑退课的问题出在选课系统上。当事人上传的配置信息显示,刷课机的刷新间隔被设置为0.1秒,他猜测因为选课网短时间内收到的大量请求,导致系统返回的数据出现错误。
“但这是一个非常严重的bug。”宋瑞说,“这不应该发生在普通服务器上。”
来天平认为这种情况不可能发生。他表示,选课和退课操作有不同的“通道”,即使在选课高峰期系统也不会将二者混淆。此外,选课与退课的条件不同,为了避免意外操作,退课前系统也会发出提醒。“无论是理论上还是实践中,这个问题都不应该发生”。
每年计算中心都会接到学生的电话,说“还没选的课程已经选了”或者“还没退的课程已经退了”。但是查看选课系统的日志后发现,造成退课的一般是用户自己的操作,而不是系统故障。“有时候可能是学生忘了退学,但选课系统有完整的日志。我们可以了解学生什么时候登录系统,做过哪些数据操作。”为了平衡解释。
项目开发者萧柏途怀疑这是部分使用者为了阻止别人使用刷课机而散布的谣言。为了在抢课时取得优势,使用者不得不缩小刷新间隔,逐渐形成了恶性竞争。“一方面,说刷课机会退课会吓走外行人,第二,把退课原因归结到刷新间隔太短也能防止其他人设置低间隔。”萧柏途说。
采访人员调查了80位刷类机用户设置的刷新间隔,发现只有2.5%的用户使用默认参数,5秒是最常见的设置,占比18.8%。间隔不超过1秒的总人数占23.9%,最小间隔设置为0。

△刷机80用户设置的刷新间隔
萧柏途表示,在刷课机中设置“0间隔”意味着当上一轮刷新结束,程序判定待选的课仍然没有空余名额时,就立即开始下一轮刷新。但由于网页的加载需要时间,刷新速度依然受到限制。他估计正常情况下,这种设置最快可以实现每秒10至20次刷新。
一位刷课机的用户说,他在补录退选前两天使用默认刷新间隔,发现效果不好,就依次调整为6秒、4秒、2秒。最后缩短到1秒,成功入选热门课程《逻辑导论》。然而,他没有注意到辍学的隐患,因为他没有看到明确的辍学证据。
目前,GitHub上该问题已被用户cbwang2016关闭。调查发现,该用户也是Chrome刷课插件“PKU选课助手”的开发成员,采访人员尝试联系该用户,截至发稿时,尚未收到回复。
监管困境
“请不要使用刷课机,否则会受到学校严厉处分!”选课系统的错误提示让经济学院2018级本科生王馨第一次知道刷课机的存在。她从未见过真正的刷课机,并认为学校应该查明真正的刷课机使用者,把他们违规选上的课全部退掉。

△选课系统弹出警告
但在技术层面,甄别刷课机并非易事。“如果有人用刷课机每隔2秒刷新一次,和他手动在界面上每隔2秒点一次刷新,两种操作后台是区分不出来的。”来天平说,“目前还没有一种机制,能准确、直接地判断出选课操作是不是刷课机执行的。”

推荐阅读