爬虫模拟登陆强智教务系统

本文介绍了如何使用Python模拟登陆强智教务系统,通过抓包分析请求URL,找到加密方法,实现登录过程。在验证码识别部分遇到了困难,尝试了Tesseract-OCR和百度AI识别,最后采取了人工识别的方法。总结中强调了在爬取登录后页面时携带cookie的重要性,以及提高验证码识别准确性的策略。
摘要由CSDN通过智能技术生成

爬虫模拟登陆强智教务系统

引言

面对疫情,我可以做什么呢?
在这里插入图片描述
面对疫情,我可以每天睡到11点
面对疫情,我可以……
好像也没有别的事情可以干了
ε=(´ο`*)))唉,看来只能呆在家中当废物了。最近,在家闲的无聊,便打起了学校教务系统的主意,没错,就是那个抢课巨慢,平时还不怎么好用的强智教务系统。今天,我就尝试一下用Python写个爬虫来模拟登陆一下强智教务系统。

思路分析

我们在用浏览器进行登陆时,需要填写用户名、密码和验证码这三项内容,而我们用爬虫进行模拟登陆的关键就是找到请求的URL,然后写代码发送请求即可。
首先,进行抓包分析
在这里插入图片描述
在请求的URL中,我们发现了其中一个URL以post的方式请求服务器,并且返回的状态码为302,页面被重定向了,而重定向的URL正好是登陆成功后的主页。
在这里插入图片描述
从发送的数据中,我们发现最后一项就是验证码,而前两项并没有什么卵用,最关键的是第三项的数据,看起来毫无规律可循,盲猜是对用户名和密码进行了加密,应该是防止别人破解吧!
回到登陆页面,查看页面的源代码,竟然发现了它的加密方法。(写这个网站的程序员意识这么低吗?)
在这里插入图片描述
有了加密方法,剩下的就好办了,用Python重写这个算法,生成加密字符串,再发送请求就行了。用户名和密码加密算法代码如下:

def get_code(username, password, session):
    str_url = 'http://jwgl.sdust.edu.cn/Logon.do?method=logon&flag=sess'
    headers = {
   
        '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.9',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        'Host': 'jwgl.sdust.edu.cn',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
    r = session.get(str_url, headers=headers)
    dataStr = r.text
    scode = dataStr.split("#")[0]
    sxh = dataStr.split("#")[1]
    code = username + "%%%" + password
    encode = ""
    # 加密算法核心代码
    i = 0
    while i < len(code):
        if i < 20:
            encode += code[i:i 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值