美文网首页编程杂谈
通过爬虫来理解Cookie和Session

通过爬虫来理解Cookie和Session

作者: eye_water_ | 来源:发表于2019-04-28 22:48 被阅读0次

    前言

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

    登录的流程

    无标题绘图.png

    这样做有什么好处?

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

    Session_id也有可能存在内存上

    Set_cookie

    一般打开教务系统时,因为我们前面多次登录过,因此Cookie信息会一直保存在浏览器中,我们要做的就是先清除Cookie

    cookie.PNG

    清除完Cookie刷新界面,可以看到返回的头部信息

    cookie1.PNG

    Cookie

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

    cookie3.PNG

    利用爬虫进行模拟登录

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

    观察整个请求头发现,只需要在利用爬虫进行请求页面时把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进行认证,认证通过,就意味着登录成功

    cookie4.PNG

    退出网页

    当我们在教务系统退出时,发现上述代码已经不能用了


    cookie5.PNG

    猜测在后台服务器中Session_id存储在内存上,要不然对于频繁的登录登出操作如果通过数据库进行增删查,那么会对速度造成很大的影响

    相关文章

      网友评论

        本文标题:通过爬虫来理解Cookie和Session

        本文链接:https://www.haomeiwen.com/subject/hdmsnqtx.html