Python模拟登录高校URP教务系统 !

对于爬虫来说,需要爬取的信息如果需要登录才可以得到的话,那么我们就需要模拟登录。比如,登录教务系统才可以获取成绩。

目前国内高校除了使用自己开发的教务系统,部分高校还统一采用了正方教务管理系统、URP综合教务系统、青果教务系统等。

由于网上介绍正方教务系统模拟登录的文章很多、使用青果教务系统的高校比较少,所以今天介绍一下模拟登录URP综合教务系统。

下面是某校使用了十几年的URP综合教务系统登录页面。

打开浏览器的开发者工具,可以看到如下图所示的信息,比如请求地址、请求方法、请求状态、表单数据等。

得到这些信息,我们就可以模拟浏览器,使用请求地址、请求方法、表单数据进行模拟登录啦!

直接上代码吧,注释很详细。首先引用了requests库,这是比较流行的第三方请求库,既然是第三方,就需要手动安装,安装命令百度一下。然后使用了类,尽可能让代码装得优雅(虽然就这么几行)~

# 导入requests库
import requests
# 登录类
class Login(object):
    # init 函数
    def __init__(self):
        # 请求头
        self.headers = {
            'Referer': 'http://xxx.xxx.edu.cn/login.jsp',
            'User-Agent':
            'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36',
            'Host': 'xxx.xxx.edu.cn'
        }
        # 登录请求地址
        self.post_url = 'http://xxx.xxx.edu.cn/loginAction.do'
        # 验证码请求地址
        self.yzm_url = 'http://xxx.xxx.edu.cn/validateCodeAction.do'
        # 维持一个session
        self.session = requests.Session()
    # login函数
    def login(self, account, password):
        # 请求验证码并保存
        with open("yzm.jpg", "wb") as f:
            f.write(self.session.get(self.yzm_url, headers=self.headers).content)
        # 暂时手动输入验证码
        yzm = input("请查看当前目录下的验证码图片,输入验证码\n")
        # 登录请求数据
        post_data = {
            'zjh': account,
            'mm': password,
            'v_yzm': yzm,
        }
        # 请求登录
        loginResponse = self.session.post(self.post_url, data=post_data, headers=self.headers)
        # 打印结果
        print("状态码:" + str(loginResponse.status_code))
        print(loginResponse.text)
# 测试
if __name__ == "__main__":
    myLogin = Login()
    myLogin.login(account='xxxx', password='xxxx')

运行程序,需要手动输入代码同级目录下储存的验证码,然后程序会输出本次请求的状态码和response内容。

这种网站模拟登录还是比较简单的。当然,如果有兴趣,可以继续拓展,引入第三方图片验证码服务或者自己研究图像识别处理验证码。

猜你喜欢

转载自blog.csdn.net/qq_42156420/article/details/89639791