上次有的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协议。
赞赏一下
支付宝打赏
微信打赏