python爬取教务系统_python 爬取 强智科技教务系统(湖南)

本文介绍了如何使用Python模拟登录并爬取湖南工商大学强智科技教务系统的课表信息。首先分析登录过程,发现需要通过JS加密账号密码,然后使用`execjs`调用本地JS文件进行加密。接着,利用`requests`发送登录请求并获取cookies。成功登录后,解析教室课表查询的数据包,将其保存为CSV文件,便于进一步处理和查询空教室。
摘要由CSDN通过智能技术生成

扯闲:

说在前面的废话: 又开学了,我要好好学习,想找个空教室自习真不容易(虽然有书院,但是人多啊,找个没人的教室自习多好~),一楼一楼的往上找教室,就算我不觉得麻烦,但是小姐姐(基友)也会觉得麻烦),所以( 摊手)。

进入正题:

想到两种方法:

1:先通过谷歌抓包,获得所有校区教学楼上课的课表,然后自己写个小程序自动判断下,然后汇总。缺点如果教务系统更新了,原来的就不能用了(课表都变了,你还咋用233333)

2:还是先分析各个数据包,然后模拟登录教务系统(非pyautogui,而是使用session模拟浏览器),然后发送特定数据包,获得课表,再统计输出,实时获得最新信息(如果教务系统上出错,那我也无奈啊)

为了让小姐姐(基友)有更好的使用体验,肯定选择第二种啦~

一、使用账号密码登录教务系统(以湖南工商大学教务系统为例)

百度直接搜到的网址需要验证码,但是有个不需要验证码的(这就很爽了)点击这里进入登录

1、 分析登录网页

先打开F12 点击Network,先自己登录走一遍,发现它直接跳转到了教务系统里面,

我们找到LoginToXk这个数据包,注意框框里面的是加密后的数据,也就是我们需要让服务器认证的东西。

当然这个数据是(账号密码)被加密后再发送的,所以我们再退到登录页面。

进入登录页面后,点击右键,检查。

我们发现我们点了登录那个按钮后,会先经过一个JS处理,就是submitForm1()这个,然后把加密后的东西 传送给我们上面找到的LoginToXk这个数据包。

把这个代码展开,我们找到这个方法,再最下面。

大概看下代码,加密在这两个地方

encodeInp(xh);

encodeInp(pwd);

我们通过浏览器自带的search 查找,发现这个加密函数在另外一个JS里面,顺藤摸瓜。

重新看下登录界面的数据包,找到conwork.js 我们看下如如何加密的。

恩,有点麻烦,怎么办。。。。

模拟加密,写了开头,既然它有加密的JS,我为啥不直接用?我用的是python!问下度年,发现

import execjs

可以直接调用本地的js 然后获得返回的信息,nice! 我们先把这个JS保存在本地。

然后写个调用js加密,然后返回结果的函数,注意显示账号加密,然后中间有三个%,然后再接密码加密。

import execjs

def get_js(self, msg): # python 调用JS加密 返回 加密后的结果

with open('conwork.js', encoding='utf-8') as f:

js = execjs.compile(f.read())

return js.call('encodeInp', msg)

encode = str(self.get_js(account)) + "%%%" + str(self.get_js(psw)) + "=" # 获得加密后的东西

加密搞定。

然后我们模拟LoginToXk,发送数据包,这里我们需要有个cookies,cookies而且这个cookies 在全局都有用。

cookie在进入登录页面就会自动给你分配。所以我们先获得cookies.

​# -*- conding:utf-8 -*-

import requests

import re

import execjs

ses = requests.session()

def get_login_cookies():

header = {

"Content

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值