Python模拟登陆强智教务以及使用(持续更新中)
现在的课表软件,广告真滴太多了,于是潜心想弄一个既简单又美观的课表。
目前已经实现的功能
- 获取cookie
- 获取课表
- 获取成绩
- 信息处理以及发送
开始工作
您需要准备一个python环境以及可以联网且自备火狐或者谷歌浏览器
第一大步 获取cookie
一、客户端加密处理
- 直接用我校的教务做例教务地址。
- 按下F12打开开发者工具选择“Network”选项,并勾选“Preserve log”。
- 点击地址栏左边的“不安全”,将已存储的cookie删除并按下F5或者 Crtl + R刷新界面
- 可以在界面看到第一个GET请求里包含服务器在相应头里面的Set-Cookie
- 我们继续往下看发现了验证码的请求信息
发现其有效cookie和get请求地址是
// Cookie和它的好朋友Request URL
Cookie: JSESSIONID=9680988439B17ECD5CA38A2CA3720A0A; SERVERID=122
Request URL: http://jw.wfu.edu.cn/verifycode.servlet
不难发现与第一个Get请求的Set-Cookie值相同,而且还舍去了无关值
无关项: Path=/; HttpOnly path=/
第一次get请求服务器给的Set-Cookie:
验证码的Cookie:随便在账号和密码输入“123456789”和正确的验证码,发现有两条关于登陆的请求:
先看第一个请求由此可见其Cookie与第一此所得的Set-Cookie相同,并且是向http://jw.wfu.edu.cn/Logon.do?method=logon&flag=sess这个地址发送了post请求,先试着访问该网址,看看会返回什么返回了一堆字符串,先留个影响应该是与登陆数据加密有关,继续看下一个请求Cookie不变,也是post请求不过这次带上四个参数,分别是userAccount,userPassword,RANDOMCODE和encoded。不难看出分别代表账户、密码、随机码以及编码。前两个值为空我们在接下来的处理直接留空即可,再看随机码也就是验证码可以直接读验证码即可,最重要的是encoded的值是如何来的,接下来开始分析网页源码找到与encoded有关的再看看。
在开发者工具里选择“Sources”,按下Crtl + F 输入“encoded”寻找相关信息不难看出,这是encoded的源头,点击左侧行号加入一些断点,再在账号密码里面输入“123456789”输入正确的验证码点击提交看其如何变化提交后,分析其加密原理不难看出,其dataStr其实就是之前post其http://jw.wfu.edu.cn/Logon.do?method=logon&flag=sess点击前往所返回的字符串,利用#将dataStr一分为二,左边的值为scode,右边的值为sxh。而code则是我们之前输入的账号与“%%%”再与密码拼接而成的。
//拿上图的数据举例
dataStr = "0u392G8aeR59otA1jAqEL84e9N4802352L8G1788#13121331331232313121"
scode = "0u392G8aeR59otA1jAqEL84e9N4802352L8G1788"
sxh = "13121331331232313121"
code = "123456789%%%123456789"
encoded = ""
- 继续往下走不难发现,当i<20时,按照其语句来分析就是encoded = encoded + code的第i个字符 + scode取第一个到第sxh的第i个的数字,如果i>20,直接把code剩下的拼接到encoded即可。再往下走,看看是否如此:然而结果就是这样
//拿上图的数据举例
dataStr = "0u392G8aeR59otA1jAqEL84e9N4802352L8G1788#13121331331232313121"
scode = "0u392G8aeR59otA1jAqEL84e9N4802352L8G1788"
sxh = "13121331331232313121"
code = "123456789%%%123456789"
encoded = "102u39324G85a6eR579ot8A91jA%qEL%8%4e19N42803235425L8G61778889"
- 用Python实现encoded算法如下:
dataStr = "0u392G8aeR59otA1jAqEL84e9N4802352L8G1788#13121331331232313121" # 客户端获取的dataStr
usr = "123456789" # 账户
psw = "123456789" # 密码
split_str_data = dataStr.split("#") # 用"#"分开彼此
scode = split_str_data[0] # 获取scode
sxh = split_str_data[1] # 获取sxh
code = usr + "%%%" + psw # 获取code
lang = 0
for b in code: # 计算长度lang += 1
encoded = ""
b = 0
for a in range(lang): # 遍历实现encoded算法if a < 20:encoded = encoded + code[a]for c in range(int(sxh[a])): # 再次遍历实现scode长度相加encoded = encoded + scode[b]b += 1else:encoded = encoded + code[20:] # i > 20 直接把余下的code拼接break
print(encoded) # 打印结果# 结果
102u39324G85a6eR579ot8A91jA%qEL%8%4e19N42803235425L8G61778889
2021年5月13日14:18:38先写到这儿,还有些事儿要处理,明后再更新cookie章节
Python模拟登陆强智教务以及使用(持续更新中)相关推荐
- Python模拟登陆大连交通大学教务在线
Python模拟登陆大连交通大学教务在线,使用wxPython做的界面,urllib2发送数据,可以实现登陆后获取首页登陆数据的功能,目前只做登陆,其他的暂时没做 Python2.7代码 # -*- ...
- 《python编程从入门到实践》python入门级-学习笔记(1-2章)——持续更新中
CSDN的小伙伴们你们好~从今天起我开始自学编程了. 恭喜你关注到一个成长型账号. 一以来作为美术出身的TA,我无数次的向往能打出几行属于自己的代码.为了跟上时代的步伐,也为了能更加深入TA这个职业, ...
- Python学习小甲鱼视频做的笔记(持续更新中)
Python BIF :Built-in functions(内建函数) Python与大多数其他计算机语言的做法稍有不同,他并不是把值存储在变量中,而更像是把名字贴在值的上边. 在使用变量之前,必须 ...
- Python和Scala和Java的语法对照表(持续更新中)
泛型 Scala Java def func1(a:String,b:Long): Tuple2[String,Long] = { val random=new Random() ...
- python爬虫获取强智科技教务系统学科成绩(模拟登录+成绩获取)
python爬取强智科技教务系统,以江苏科技大学为例:本人开发的系统作为参考:https://www.wjn1996.cn/estudy/tools/educationLogin.jsp?school ...
- python3 + selenium 进行强智教务成绩的刷新以及通知成绩(华东理工大学 某ecust)
强智教务自动刷新教务处成绩,更新后发邮件通知,以某ECUST华理为例子.此处的ECUST华理教务系统是18年9月后的新系统 Windows端或者挂在阿里云上都可以,下文示例是在Ubuntu上运行的. ...
- python模拟登陆 验证码el_python 模拟登陆github的示例
# -*- coding: utf-8 -*- # @Author: CriseLYJ # @Date: 2020-08-14 12:13:11 import re import requests c ...
- python模拟登陆163邮箱并获取通讯录
From: http://hi.baidu.com/fc_lamp/blog/item/2466d1096fcc532de8248839.html python模拟登陆163邮箱并获取通讯录 #-*- ...
- 模拟登陆新版正方教务管理系统【可以获取学生基本/课表信息】
写在前面 博主登陆现在还可以正常使用,但是后面登陆成功,获取信息啥的有问题 登陆还是按照学长的来,模拟登陆新版正方教务管理系统 开始 学校教务系统改版,我直接copy博主代码获取学籍那里一直是获取到的 ...
- 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?
前言: 时隔三周没有和大家见过面了,最近在研究python模拟登陆专题,话不多说,让我们愉快地开始实现模拟登陆实现网易云自动签到 开发工具 **Python****版本:**3.6.4 相关模块: D ...
最新文章
- 基于Go语言来理解Tensorflow
- windows环境下安装neo4j
- linux基础篇-10,权限管理chown chgrp chmod umask
- Spring-Boot:5分钟掌握SpringBoot开发
- Windows系统下的Visual studio2019 安装 opencv4.5.1的安装
- 关于计算机专业的求职信英文怎么说,计算机求职信范文英文3篇
- 分析 H.265 + AAC 的 FLV 文件
- python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白
- jackson驼峰转下划线注解_jackson序列化与反序列化的应用实践
- Transformer可以不需要Softmax?Kakao提出了UFO-ViT,性能高,计算量还小
- 【第8篇】Python爬虫实战-批量删除csdn私信记录
- 23种设计模式(十五)接口隔离之适配器
- 什么软件可以压缩图片大小?这几个软件值得收藏
- 医院设备管理系统方案/案列/软件/APP/小程序/网站
- 【高等数学】微积分----教你如何简单地推导求导公式(二)
- 腾讯云CDN加速COS图床
- nali: 给dig,traceroute等命令的输出的ip附加上地理信息
- 报错Error configuring application listener of class jdbc.ContextListener 解决办法之一
- 关闭windows defender
- 【CSDN|每日一练】小艺的英文名