置顶:关于本项目,由于官方的接口以及更改,所以第一个引擎已无法使用,第二个引擎效果也不好,所以我也不会再维护这个项目了
如果有兴趣,欢迎查看两个主要文件,里面有我的详细注释,重要的是思路,结果已经没意义了
环境:Django 2.1.7,aiohttp 3.5.4,,pyquery 1.4.0,requests 2.21.0
声明:本项目仅供个人学习,请勿作商用,如有侵权请联系我删除,请不要让警察叔叔抓走我
输入题目,通过异步爬虫爬取考试资料网,上学吧两个在线搜题网站,然后将爬取的题目及答案显示在网页
此项目的关键是爬取搜题网站,主要涉及的是题目数据的清洗,
获取答案链接请求参数的破解.
答案请求方式的分析.
限制免费次数的分析.
开发版的程序为index/shangxueba.py和index/ppkao.py里面有详细的注释
上学吧接口分析,关于上学吧,我是通过Fiddler进行app抓包分析的,主要有3个阶段:
- 输入问题,获取返回问题ID列表
- 根据ID去获取题目的信息,如果获取成功,则返回完整的题目的内容即题目+选项
- 根据ID去获取题目答案,关键在于post请求data中的iden参数,此参数是服务的验证用户是否已经用完免费次数,所以只
需要每次请求答案是更换不同的iden,就可以去除限制
- 输入问题,获取问题ID列表
- 此网站查看答案是通过页面上的一个按钮跳转至获取答案的Api再重定向到答案页面,其中会有云盾和用户登录验证,所
以我们直接以post方式请求Api,直接获取答案链接,进而直接访问答案链接,免去中间登录和云盾的验证.注意,返回的是带
有XXX/tiku/daan/id.html,但是实际在浏览器查看答案是没有'/tiku'的,即应该是XXX/daan/id.html
- 直接在答案页面爬取完整的题目,选项,及答案图片的base64编码
git clone git@github.com:swpu-cxm/tisoso.git
cd tisoso
pipenv install
pipenv shell
python manager.py runserver