python爬虫——使用Cookie登录教务系统

爬虫可作为一种用作信息收集的脚本使用,在生活中多有涉及,根据任务的不同其编写的难易程度自然不同,本篇将讲述爬虫常用的登录绕过方法,该方法实现较为简单,目标网站就拿身边比较常用的教务系统试试手吧😉

请合理合法使用网络爬虫!!!

环境依赖库
  • requests
项目分析
  1. 确定目标
  2. 网站抓包
  3. 数据分析
  4. 脚本编写
目标说明

使用爬虫脚本成功登录教务系统,由于网站前后端分离各自负责不同工作,网站通常通过用户Request请求中的Cookie进行身份识别,因此实现登录的最简单方法就是在爬虫访问时自建表头Header,在表头中添加已登录的Cookie即可绕过登录验证,这次就先讲解这个比较简单的登录方法。

抓包分析

使用浏览器打开开发者工具(F12),对教务系统登录页面进行抓包可以抓取如下一些数据包,然而这些包对我们的目的而言作用不大,该页面抓取的数据包目的在于加载、显示登录页面及加载相关操作脚本。
登录页面抓包
但在此次抓包中我们可以对Request Cookies进行简单分析,可以看出此时仅存在一个名为JSESSIONID的Cookie数据,该Cookie在用户访问系统时经后台服务器创建,并将作为此次Session会话中的用户身份标识。在Session会话存活周期内JSESSIONID不会改变,一般情况下,若用户在一定时间内未做任何操作,则此次Session会话结束,下次访问系统时,后台服务器重新分配JSESSIONID,不排除后台服务器设置了Session最大存活时长的可能。

Cookie信息
由于此次我们使用已登录的Cookie绕过登录验证,所以我们只需要在正常登录后获取该JSESSIONID,并将其加入到请求的表头中即可实现绕过登录,因为该JESSIONID作为用户标识已经在浏览器中被用户操作登录,所以后台服务器认定,在该Session存活周期内,该用户已经过登录。

用户在每次网络请求时,JSESSIONID数据都会被存在Request Headers中,些许服务器会通过该头部信息作出防爬策略,因此,我们编写爬虫在进行网络请求时,也应带着这些请求头信息。

Headers

脚本编写
导入依赖包

导入前请使用pip install requests安装requests库

import requests
创建请求头信息

简单粗暴,复制抓取的Headers信息构建请求头,在每次爬虫进行网络访问时都要带着此信息

headers = {
    'Accept': 'text/css,*/*;q=0.1',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'no-cache',
    'Cookie': 'JSESSIONID=xxxxxxxxxxx',
    'Host': 'xxxxxx',
    'Pragma': 'no-cache',
    'Proxy-Connection': 'keep-alive',
    'Referer': 'xxxxxxxxxxx',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                  'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
尝试访问主页

携带已登录的Cookie信息访问系统主页,若输出内容为系统主页的html信息则操作成功,此次教程结束😎

print(requests.get(url='xxxxx', headers=headers).text)
说明

若未携带已登录的Cookie表头,直接使用requests进行请求访问,则会跳转至系统的登录页面,此时输出内容则会是登录页面的html内容。

由于Session会话存在存活周期,所以使用该方法实际上仅可在一定时间内跳过登录,若Session会话被销毁,则又需要进行登录、获取JESSIONID等操作。因此,该方法并未真正实现登录跳过,但使用起来并不算鸡肋。

下一篇将讲解爬虫正常登录操作,实现过程相比此篇要复杂一点。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值