-
Notifications
You must be signed in to change notification settings - Fork 83
如何编写自定义脚本适用于自己学校
Welcome to the ChaoXingReserveSeat wiki!
由于学习通面向不同学校的图书馆预约做了不同的处理方式(也可能是学校作妖),导致不同学校,不同图书馆存在较大的差异,相同的脚本在不同的情况下无法全覆盖实现预约,因此总是对不同的院校做对应的修改确实有点折腾不来,因此设置了该wiki用于用户自定义开发自己学校的脚本。请将代码切换到ext分支。
当直接使用脚本进行不同情况下的预约时,请根据如下几点找对应的解决方案
这通常由两种情况导致。1、由于学习通预约的页面有所更新导致现有的部分referer过老。2、enc字段加密出现问题。这种情况下请直接提起issue。
当然如果想要自己解决也并不复杂,主要步骤如下:
1、在reserve.py中的login_url进行登陆
2、通过进入预约的页面进行电脑上的预约(预约链接参考readme.md中的roomid获取方式)
3、抓包预约提交的请求中referer和现在的差距并修改
4、如果仍然存在问题,可能是enc字段加密的问题,需要找到对应的加密js脚本(reserve.js而且一般混淆过)并提取其中关键的加密步骤,重新写到encrypt.py中即可。
这个一般来说得调用一点其他工具进行过验证,常见的就是手搓opencv或者ddddocr或者在线过码网站,主要步骤如下:
1、仿照slider_reserve.py中的内容,重写self.submit方法即可
这个是最容易修改的了,主要步骤如下:
1、仿照readme.md中的方式获取对应的roomid(要注意的是,不同学校的关键字段不同,除了roomid可能还需要seatId,pageToken等,有些甚至会自动更新,目前不知道有什么手段能够统一获取,但是建议自己尝试修改)
2、获取对应的url前缀(和上一步一起,通常有https://office.chaoxing.com/front/apps/seatengine/live/select;https://reserve.chaoxing.com/front/third/apps/seat/select等等)
3、获取到对应字段之后还需要电脑提交一次以获取其提交的url前缀(通常为:https://office.chaoxing.com/front/apps/seatengine/select;https://reserve.chaoxing.com/data/apps/seat/submit)
4、仿照customed_reserve.py中的self.url和self.submit_url进行修改即可。根据不同的情况可能还需要稍微修改一下submit中提交的url的format。