模拟登录学校教务系统遇到的问题

2016-09-12 10:24:08 +08:00
 wenxw1997
我用浏览器登录学校教务系统查成绩的流程是这样的:
登录信息门户 xinxi.xxx.edu.cn
访问教务系统查成绩页面 jiaowu.xxx.edu.cn

目前用 request 或 cookielib 模拟登录信息门户没问题,信息门户上的东西都能采集,但是访问教务系统显示未登录

教务系统没有专门的登录入口
用 firebug 抓包的结果是
访问信息门户的页面时会抓到一个请求
jiaowu.xxx.edu.cn/login.do?sessionid=xxxxx(一长串数字),每次登录都不一样

这种情况下应该怎么模拟登录教务系统呢
3984 次点击
所在节点    Python
28 条回复
testpachong
2016-09-12 10:27:36 +08:00
虽然我不懂。但是你用 session
ss = requests.Session()
ss.get()
popok
2016-09-12 10:27:38 +08:00
那你就找到这个 sessionid 是怎么得到的,是 js 还是 set-cookie 呢,照着他的流程模拟呗
whwq2012
2016-09-12 11:13:03 +08:00
那就先找到这个 session id 是从哪里来的啊
jpyl0423
2016-09-12 11:18:21 +08:00
试试 Fiddler, 应该可以抓到这个 session id 从哪个请求返回的.
jpyl0423
2016-09-12 11:19:45 +08:00
@jpyl0423
忘了说了, 如果网站是 https 的话, Fiddler 不支持 win10, 只能装个 win7 的虚拟机抓包.
killerv
2016-09-12 11:29:31 +08:00
把整个流程分析一遍,用 chrome 就可以,那个 sessionId 无非是来自 js 、 cookie 这些东西
hinkal
2016-09-12 12:13:38 +08:00
为什么每个月都有人要爬教务系统然后遇到问题来发帖的?是什么神秘组织的投名状还是什么地方看到的实战练习题吗?不大相信这么多学生不约而同要爬教务系统所以我问问
smilekung
2016-09-12 12:21:04 +08:00
@hinkal 因为中国高校的教务系统太烂了,爬教务不仅练技术还方便大众啊……还能抓不少学生数据
a87150
2016-09-12 12:21:37 +08:00
@hinkal http://cuiqingcai.com/997.html Python 爬虫实战七之计算大学本学期绩点
大概是这个。
wenxw1997
2016-09-12 12:27:45 +08:00
@hinka 我是因为觉得简单啊。我就是想算个平均绩点而已。其实直接在网页上复制到 excel 就可以了,但我还是想试试能不能用 Python 写一个程序,只要输入用户密码就能拿到成绩信息。
wintercoder
2016-09-12 12:33:24 +08:00
访问一次首页就会有 302 跳转到那个 sessionid...的链接,你可以在响应的 header 里看到有个链接,通过 header 获得 sessionid....,需要在代码里禁止 302 跳转
solonF
2016-09-12 12:40:16 +08:00
@hinkal 其实我觉得不约而同爬教务系统的现象可能是正常的,比如我就一直(蓄势待发?)((其实是想做但是又不会,其实还蛮希望您所说的神秘组织存在以及完成的哥们做一个完整的 tutorial 来造福以下我这种菜鸟的 XD ))
ahjsrhj
2016-09-12 12:55:07 +08:00
我也尝试过爬过 以失败告终
kylinking
2016-09-12 13:00:27 +08:00
可以用 burp 抓包,请求信息都能列出来
另外,可以参考这个的模拟登录 https://github.com/kylingit/URP_instructional_evaluation
practicer
2016-09-12 13:15:50 +08:00
如果实在搞不定登录的话,就用 selenium 大法吧,给公司刚写完一个 selenium+phantomjs 的爬虫,用来解决 ajax 网页加载和 304 的问题,楼主可以尝试一下
zonghua
2016-09-12 13:47:57 +08:00
那个 session 可能是安全狗的设置,需要携带 cookie 才能访问
zonghua
2016-09-12 13:48:59 +08:00
@ahjsrhj python 字符串编码头疼
Rememberautumn
2016-09-12 14:18:29 +08:00
是需要跨站登陆,用 Chrome 看一下登陆过程
mikii
2016-09-12 14:36:23 +08:00
@jpyl0423 win10 可以用 fiddler 。
wenxw1997
2016-09-12 14:52:58 +08:00
没办法一个个 @了,总之感谢以上各位。
我傻逼了!
我傻逼了!
我傻逼了!

原来 sessionid 是存在 html 源码里的,我之前看了好几次源码都没发现!!!(因为没有把滚动条往右拉)
总之只要拿到这个 302 前的地址访问一次, cookie 就搞定了,就可以访问成绩页面了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/305594

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX