首页 > 编程 > Python > 正文

python模拟登陆GDUFE教学一体化平台

2019-11-08 18:48:04
字体:
来源:转载
供稿:网友

爬取的网址:http://jwxt.gdufe.edu.cn/jsxsd/

最近在研究python爬虫,就拿了自己学校的一个相当于教务系统的东西?来模拟登陆了一下。网上查了一下资料,

教务系统好像通常都是爬虫新手&学生的挚爱,因为登陆简单不用验证码等等等。。

其实这个还是挺简单的,但是我在分析HTTP的请求和响应的时候中了一个坑,所以搞了一天。。真是弱,好烦微笑微笑微笑

先说说用到的python库是urllib.request和http.cookiejar。模拟登陆需要使用cookie去保持登陆的状态,若不懂就自行百度。

这里主要想聊一聊如何抓包和分析HTTP请求和响应的消息头。

先看看这个系统的登陆界面:

我就直接登陆然后用360自带的功能进行抓包,看看在登陆的时候模拟器和服务器之间干了些什么。登陆前按F12就可以了:

我们关注Network,里面显示的是抓到的包。看名字第一个就是登陆相关的,点进去看看吧:这里就是登陆的时候发送和收到的请求和响应消息,有了这些信息,我们就可以模拟浏览器去登陆系统了。

Request Headers:

请求的header在这里不重要,这个系统似乎也没有任何手段去阻拦程序去访问,有些网站就会根据User-Agent去识别你是否浏览器访问。

python就可以根据这个参数伪装成浏览器去访问了。

Form Data:

这里就是登陆的时候需要提交的表单数据,这里只需要提交账号和密码

Response Headers:

这里是服务器响应的消息,Location是重定向的地址。表单提交后登陆成功就会转到这个地址。

这里说说我踩到的坑,看看第一行的Request URL是表单提交请求的URL,也就是说,表单应该提交到这个网址,这里才是程序登陆的入口!!

而不是我一开始给的网址:http://jwxt.gdufe.edu.cn/jsxsd/;考虑一下程序的行为:把消息头表单数据提交到这个网址,它并没有表单处理的功能,

当然就登陆失败了,虽然它还是会返回一个cookie给你,但是使用这个cookie并不能登陆。

下面是代码:

from http import cookiejarfrom urllib import requestfrom urllib import parse#这个是提交表单的urlurl = 'http://jwxt.gdufe.edu.cn/jsxsd/xk/LoginToXkLdap'file = 'C:/Users/Administrator/Desktop/cookie.txt'post_data = parse.urlencode({	'USERNAME':'14251102221',	'PASSWord':'291608411'}).encode(encoding='utf8')header = {	'Referer':'http://jwxt.gdufe.edu.cn/jsxsd/',	'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36'	}req = request.Request(url,post_data,header)#使用cookie创建自己的openercookie = cookiejar.CookieJar()handler = request.HTTPCookiePRocessor(cookie)opener = request.build_opener(handler)f = opener.open(req)#登陆成功后保存了cookie,然后就可以访问登陆后的其他url了,这个是课程表的urlgradeURL = 'http://jwxt.gdufe.edu.cn/jsxsd/xskb/xskb_list.do'result = opener.open(gradeURL)f = open('C:/Users/Administrator/Desktop/1.html','wb')f.write(result.read())


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表