之前用js实现了下学习通讨论区的复读机,然鹅由于js学艺不精,遗留了一堆bug还解决不掉,所以用python重写了一次
整个流程中,需要对十个地址进行访问,分别是:
- 获取uuid与enc与JSESSIONID并保存:http://passport2.chaoxing.com/cloudscanlogin
- 获取登陆二维码:http://passport2.chaoxing.com/createqr
- 检查登录状态并记录cookie:http://passport2.chaoxing.com/getauthstatus
- 获取接下来需要的完整cookie信息:https://3wfy-ans.chaoxing.com/passport/allHead.shtml
- 进入个人主页:http://hdu.fanya.chaoxing.com/courselist/study
- 进入课程主页:程序中动态获取
- 进入讨论主页:程序中动态获取
- 进入讨论详情页:程序中动态获取
- 点击加载更多按钮:https://mooc1-2.chaoxing.com/bbscircle/getreplysbytopicId
- 提交答案:https://mooc1-2.chaoxing.com/bbscircle/addreply
几点心得:
- 由于超星从来不向前端传输json数据,所有网页均后端生成,所以必装一个
from bs4 import BeautifulSoup
,用它来读取html内容,不然全部正则能写死自己 - 在用同一个headers请求几个不同域的地址的时候,一定要删掉headers中的host属性!
- 不要手打往服务器传的参数名称,超星一会儿是topicid,一会儿是topicId的……
生成的exe比较大,就不往上传了,把代码传一下吧