上次有的php篇数字杭电模拟登陆,不过由于如今没有了验证码,可能会出点小错误,因此用python再来进进出出一遍。
此次主要还是熟悉一下python requests的使用以及对网站cookie变化的准确捕捉。post的参数以及header也是这里的重点部分,其他还能加点简单的正则。
具体细节在代码注释里:
import requests import re #先访问一次登录网站得到lt(lt后面必须,且一次性使用) def getHduCookie(): resp=requests.get('http://cas.hdu.edu.cn/cas/login') m = re.search(r'name=\"lt\" value=(.*?) />', resp.text) lt=m.group()[17:-4] return lt #模拟登陆用户名为学号,密码为md5加密后的密码,返回跳转链接 def simLogin(lt): password=hashlib.md5(psd.encode('utf-8')).hexdigest() params={ 'encodedService':'http%3a%2f%2fi.hdu.edu.cn%2fdcp%2findex.jsp', 'service':'http://i.hdu.edu.cn/dcp/index.jsp', 'username':xh, 'password':password, 'lt':lt } resp=requests.post('http://cas.hdu.edu.cn/cas/login?service=http://jxgl.hdu.edu.cn/index.aspx',params=params) m=re.search(r'href="(.*?)"',resp.text) return m.group()[6:-1] #去临时链接获取一次cookie并保存请求 def jxglPage(url): req=requests.Session() resp0=req.get(url) req.headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 'Referer':'http://jxgl.hdu.edu.cn/xf_xsqxxxk.aspx?xh='+xh+'&xm=%25%5cB8%25%5cCA%25%5cBC%25%5cD2%25%5cB3%25%5cC7&gnmkdm=N121113', 'Accept-Encoding': 'gzip, deflate', 'Content-Type':'application/x-www-form-urlencoded', } return req #这里的例子是获取选课列表 def classList(req): data=''#这里是post的一大串字符,可从浏览器获取 url='http://jxgl.hdu.edu.cn/xf_xsqxxxk.aspx?xh='+xh+'&xm=%25%5cB8%25%5cCA%25%5cBC%25%5cD2%25%5cB3%25%5cC7&gnmkdm=N121113' resp=req.post(url,data=data) resp.encoding='gbk' print(resp.text) #主程序,设置学号密码并运行 if __name__=='__main__': xh='学号' psd='密码' lt=getHduCookie() tmpurl=simLogin(lt) req=jxglPage(tmpurl) classList(req)
学习为主,连我都不信。
温馨提醒:此片不要与hack验证二维码篇结合搞事情啦!
版权声明:本文为原创文章,转载请注明出处和作者,不得用于商业用途,请遵守
CC BY-NC-SA 4.0协议。
赞赏一下