Python:30行代码,使用POST登录山大的教务处系统(附完整源码)

本文详细介绍了如何使用Python通过POST请求登录一个使用rsa加密的教务系统,包括抓包分析参数、计算rsa值以及实现登录功能的完整源码。通过分析网页源码和执行JavaScript,成功解决非标准登录方式带来的挑战。
摘要由CSDN通过智能技术生成

一、抓包分析

在这里插入图片描述
首先我们打开浏览器的开发者工具,随便输入一个用户名和密码登录,抓包分析:
在这里插入图片描述
在这里插入图片描述
显然,我们登录的时候发送了一个POST请求,而Data里面有六个数据,分别是rsa、ul、pl、lt、execution、_eventld。这显然不同于正常的username、password形式,我们逐一对其分析。

1.ul和pl

之前我是随便输的用户名和密码进行登录(用户名和密码都是111),不难看出,ul和pl分别代表用户名和密码的长度。
u = username
p = password
l = length

2.lt、execution和_eventId

我们直接Ctrl+F在网页源代码中搜索execution发现:
在这里插入图片描述
显然,这三个参数的值都直接给出来了。

3.rsa

还是直接搜索rsa,有两个结果:
在这里插入图片描述
第一个就是上面的图,我们打开第二个:
在这里插入图片描述
阅读代码不难发现,rsa的值是通过调用了一个名为strEnc的函数得到,于是我们搜索strEnc:
在这里插入图片描述
这个函数位于一个名为des.js的文件中,这个文件只有这一个函数,用处也就是用于计算rsa值。那么函数找到了,我们来分析参数:
(1)u取自un, p取自pd,后两者就是用户名和密码。
(2)lt显然就是之前的lt。
(3)‘1’, ‘2’, ‘3’为固定值。
为了检验我们的结果,我们直接在控制台调用strEnc函数计算:
在这里插入图片描述
结果是完全一致的。

二、功能实现

1.主要思路

首先使用GET方法,拿到POST所需的参数,并调用des.js计算rsa值,最后POST登录。

2.获取参数

我们使用session对象记录cookie,使用Xpath获取参数。

import requests
from faker import Factory
from lxml import etree

u = input("请输入用户名:")
p = input("请输入密码:")

loginUrl = "http://pass.sdu.edu.cn/cas/login?service=http://bkjws.sdu.edu.cn/f/j_spring_security_thauth_roaming_entry"
headers = {
   "User-Agent": Factory.<
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值