通过爬虫来理解Cookie和Session

前言

Cookie和Session的概念我也接触过很多次,但一直没有机会实践一下,正巧最近想用爬虫模拟登录教务系统,就想到了利用Http的请求头来进行登录操作

登录的流程

在这里插入图片描述
这样做有什么好处?

最大的好处就是用户只需要输入一次账号密码,之后再访问网页时,只需要再Headers信息利用Cookie包含Session_id,后台就可以根据Session_id来判断用户是否登录

Session_id也有可能存在内存上

Set_cookie

一般打开教务系统时,因为我们前面多次登录过,因此Cookie信息会一直保存在浏览器中,我们要做的就是先清除Cookie
在这里插入图片描述
清除完Cookie刷新界面,可以看到返回的头部信息
在这里插入图片描述

Cookie

之后我们先输入账号密码登录
成功登录之后页面会进行跳转,对于我使用的教务系统
跳转到了
http://172.18.254.101/xs_main.aspx?xh=学号
然后看一下对于这个页面的请求头部信息
在这里插入图片描述

利用爬虫进行模拟登录

注意
在进行模拟登录时一定要在网页上保持教务系统的登录(不要退出!!!)

观察整个请求头发现,只需要在利用爬虫进行请求页面时把Headers与上述图片的Headers设置完全一样就可以获得页面信息

import requests

headers = {
	'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
	'Accept-Encoding': 'gzip, deflate',
	'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
	'Cache-Control': 'max-age=0',
	'Connection': 'keep-alive',
	'Cookie': 'ASP.NET_SessionId=t2iov2450tkelm55eiqm3ki3; BIGipServerpool-jw=2046694060.0.0000',
	'Host': '172.18.254.101',
	'Referer': 'http://172.18.254.101/',
	'Upgrade-Insecure-Requests': '1',
	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'
	
}

r = requests.get('http://172.18.254.101/xs_main.aspx?xh=201616070204', headers=headers)
print(r.text)

因为请求头中包含了Session_id等信息,因此后台服务器会对Session_id进行认证,认证通过,就意味着登录成功
在这里插入图片描述

退出

当我们在教务系统退出时,发现上述代码已经不能用了
在这里插入图片描述
猜测在后台服务器中Session_id存储在内存上,要不然对于频繁的登录登出操作如果通过数据库进行增删查,那么会对速度造成很大的影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值