目录

一、抓包检查请求信息

进入教务系统首先随便输一个号进行抓包,发现default2.axps包是使用post请求

在该文件下找到标头和负载信息

_VIEWSTATE:

txtUserName:学号信息

TextBox2:账号密码

txtSecretCode:验证码

RadioButtonList1:身份信息

Button1:

lbLanguage:

hidPdrs:

hidsc:

二、过程

准备获取cookies和_VIEWSTATE值做请求标头和负载的数据

构建post的提交表单和请求头

打印print(response.text)会得到返回的登陆成功的网络源码

三、总结

标头的构建

cookies获取

验证码识别

模拟提交数据


一、抓包检查请求信息

进入教务系统首先随便输一个号进行抓包,发现default2.axps包是使用post请求

需要注意的是,这个文件有两份,一个是get请求,一个是post请求。

post请求的文件需要你提交登录一下才会出现,你可以随便输入一个错误账号密码和验证码去登录刷新获得这个文件。

在该文件下找到标头和负载信息

  1. _VIEWSTATE:

    是在网页源代码中可以找到它的值vavle

  2. txtUserName:学号信息

  3. TextBox2:账号密码

  4. txtSecretCode:验证码

  5. RadioButtonList1:身份信息

  6. Button1:

  7. lbLanguage:

  8. hidPdrs:

  9. hidsc:

二、过程

准备获取cookies和_VIEWSTATE值做请求标头和负载的数据

import requests
import re'''创建session环境'''
session = requests.session()'''初次登录获取viewstste和cookies'''
url = '教务系统url'
r = session.get(url)'''用正则表达式获取viewstste'''
viewstste = re.findall('<input type="hidden" name="__VIEWSTATE" value="(.*?)" />', r.text)'''获取cookies值'''
'''获取cookies函数'''
def get_cookies(url,session):cookies_1 = requests.utils.dict_from_cookiejar(session.cookies)#此处是从session中获取cookies,由于返回值是一个集合形式,所以在下方需要用字符串拼接方式获得完整的cookiescookies = 'ASP.NET_SessionId=' + cookies_1['ASP.NET_SessionId']print('自定义函数cookies:',cookies)#打印一下检查是否有问题return cookies
cookies = get_cookies(url, session)

通过抓包可以得知checkcode.aspx是验证码获取的包,正方教务系统的验证码是随机的,点开该包的url会发现验证码会变化,跟显示的不一样,且每一次点击所显示的验证码都不同,所以获取验证码且保证验证码可以正常使用,该请求的cookie就要与提交的表单的cookies要统一

构建headers,将抓的包checkcode.aspx的请求标头复制下来

'''创建请求头'''
checkcode_headers={'Accept': 'image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Connection': 'keep-alive','Cookie': cookies,   #上方获取的cookies值'Host': '根据实际情况获取','Referer': '根据实际情况获取','User-Agent': '根据实际情况获取'}

此处要说明的是Ddddor这个包 在(亲测好用便捷)Python通用验证码识别OCR库ddddocr的安装使用教程https://blog.csdn.net/qq_50058672/article/details/126123778?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167880136716800182112448%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167880136716800182112448&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-126123778-null-null.142%5Ev73%5Ewechat,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=ddddorc&spm=1018.2226.3001.4187

这篇文章有介绍,可以阅读一下,此处只用了部分代码解决需求

from ddddocr import DdddOcr'''创建ddddocr环境获取验证码'''
ocr = DdddOcr() #创建环境
checkcode_url = 'http://根据实际情况填写此行/CheckCode.aspx'
img = session.get(checkcode_url, headers=checkcode_headers)#发起请求获得验证码的图片
checkcode = ocr.classification(img.content)#识别验证码

构建post的提交表单和请求头

该post请求可以在

找到。

xh='你的教务系统账号'
pw='你的密码''''发起post请求初次登录'''
log = {'__VIEWSTATE': viewstste[0],#viewstste为列表,此处需要值,则需要提取出第一个元素'txtUserName': xh,'TextBox2': pw,'txtSecretCode': checkcode,'RadioButtonList1': '%D1%A7%C9%FA',#身份的编码,此处编码意思为学生'Button1': '','lbLanguage': '' ,'hidPdrs': '','hidsc': '',
}
headers_post = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Cache-Control': 'max-age=0','Connection': 'keep-alive','Content-Length': '192','Content-Type': 'application/x-www-form-urlencoded','Cookie': cookies,'Host': '根据实际情况填写','Origin': '根据实际情况填写','Referer': 'http://根据实际情况填写/default2.aspx','Upgrade-Insecure-Requests': '1','User-Agent': '根据实际情况填写'
}
post_url = 'http://根据实际情况填写/default2.aspx'
response = session.post(post_url, data=log, headers=headers_post)

打印print(response.text)会得到返回的登陆成功的网络源码

此时就已经模拟登录成功了

三、总结

标头的构建

cookies获取

验证码识别

模拟提交数据

python模拟正方教务系统登录相关推荐

  1. python二级成绩查询入口官网_python爬虫实战之模拟正方教务系统登录查询成绩

    最近由于某些需要,开始入门Python网络爬虫,想通过一个Python程序来访问正方教务管理系统并且抓取到期末的成绩,由于我并没有深入了解过过其他的编程语言,所以,也比较不出Python和其他语言(如 ...

  2. python爬虫实战之模拟正方教务系统登录查询成绩

    最近由于某些需要,开始入门Python网络爬虫,想通过一个Python程序来访问正方教务管理系统并且抓取到期末的成绩,由于我并没有深入了解过过其他的编程语言,所以,也比较不出Python和其他语言(如 ...

  3. python模拟登录教务系统_用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  4. 用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  5. 用 Python 实现模拟登录正方教务系统抢课

    (点击上方蓝字,快速关注我们) 作者:小苏打 https://vhyz.me/2018/06/12/用Python实现模拟登录正方教务系统抢课/ 最近学校开始选课,但是如果选课时间与自己的事情冲突,这 ...

  6. asp 退出登录修改cookie能进入后台_用Python实现模拟登录正方教务系统抢课

    6月23日更新:由于国内高校正方教务系统或多或少都会有所不同,所以细节地方还是需要自己修改的,我这个过程也只是一个案例,但这其中的本质上是不变的,即是抓包分析. 如果有什么不懂的,可以在评论区评论,或 ...

  7. python抢课脚本 验证码_用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  8. python输入学号返回成绩_Python模拟登陆正方教务系统并抓取成绩单

    学校的教务系统是正方的,在大学期间无论是选课.报名还是查成绩,几乎都要和它打交道,上学期在积累了一定的爬虫和web知识后,我就想着用Python模拟登陆教务系统,实现在命令行里方便地进行成绩或课表的查 ...

  9. JSoup模拟登录新版正方教务系统(内网-教务系统)获取信息过程详解

    新版正方教务系统登录界面: 目录 一.需求分析 二.模拟登录内网 三.模拟登录教务系统 四.爬取成绩和课表信息 参考文章 一.需求分析   需要访问教务系统,爬取出课表成绩等信息,并在自己所写的APP ...

最新文章

  1. 有返回值的多线程demo
  2. Oracle创建序列的sql语句,【Oracle学习】之 序列(Sequence)
  3. 13.8.可视化虚拟机工具--Jconsole内存监控、13.9.可视化虚拟机工具--Jconsole线程监控、13.10.死锁原理以及可视化虚拟机工具--Jconsole线程
  4. 计算机动漫游戏制作 巴中,四川省哪些中专学校有计算机动漫与游戏制作专业...
  5. linux自动跑批,在linux中添加硬盘并在系统启动时自动挂载
  6. 转移到ios下载安卓_安卓和IOS角色互转 和平精英跨系统角色转移服务将上线
  7. 软件测试方法的分类细谈
  8. catia保存成stp文件时部件丢失_电脑硬盘恢复教程,简单复原硬盘丢失数据的做法...
  9. 向新手和不愿意尝试的童鞋推荐vim插件(转载)
  10. FreeType需要libpng的说明(编译时可以用参数去掉,2.12已支持svg)
  11. 决策支持系统(DSS)
  12. Linux系统结构图
  13. 单网口RFC2544测试——信而泰网络测试仪实操
  14. 使用码云(Gitee)进行开源代码管理
  15. 定时关机win10_巧用任务计划程序定时关机
  16. 利用Excel去除重复项
  17. Nginx代理规则总结
  18. 05-SA8155 QNX通过QUB配置GPIO/INT/SPI/I2C/SPI等
  19. 京东App秒杀抢购流程接口分析
  20. 蓝桥杯 提高题 Minesweeper

热门文章

  1. Linux硬件检测工具
  2. 刀塔2显示连接服务器调解中,大师调解正在连接至dota2网络 【操作方案】 的具体步骤_...
  3. Mountaintop(山峰)
  4. cocos2d-x:七彩连珠
  5. 浏览器工作原理及相关内核、技术介绍
  6. 双正交小波基 BWT
  7. 百度直播评论助手1.0版本(直播间自动发言软件)
  8. 激光打标机的特性及应用范围
  9. 激光标记舱口轮廓生成_激光的应用——激光加工技术
  10. 包教包会 | 十分钟教你用电子表格搭建一个仓库管理软件!