zoukankan      html  css  js  c++  java
  • requests---session简介

      http协议是无状态的,也就是每个请求都是独立的。那么登录后的一系列动作,都需要用cookie来验证身份是否是登录状态,为了高效的管理会话,保持会话,于是就有了session

    session简介

      session是一种管理用户状态和信息的机制,与cookies的不同的是,session的数据是保存在服务器端。说的明白点就是session相当于一个虚拟的浏览器,在这个浏览器上处于一种保持登录的状态。

    session登录

    格式:

    # session 用法
     |  Basic Usage::
     |  
     |    >>> import requests
     |    >>> s = requests.Session()
     |    >>> s.get('https://httpbin.org/get')
     |    <Response [200]>
     |  
     |  Or as a context manager::
     |  
     |    >>> with requests.Session() as s:
     |    >>>     s.get('https://httpbin.org/get')
     |    <Response [200]>

    1.举个例子,模拟百度登录场景

    2.查看登录后百度账号的cookies值,经过观察发现是由”BAIDUID“和"BDUSS"

    3.导入requests模块,使用session()函数

    4.携带cookies进行请求,通过返回内容,判断是否登录成功。

    # coding:utf-8
    import requests
    # 保持登录状态
    s = requests.session()
    url = 'https://www.baidu.com/'
    # 请求头
    headers = {
         "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
    }
    r = s.post(url,headers=headers)
    # 查看的cookies值
    cooks = {
        "BDUSS":"xxxxxxx",
        "BAIDUID":"XXXXXXXX"
    }
    # 添加登录所携带的cookies
    c = requests.cookies.RequestsCookieJar()
    c.set("BDUSS",cooks["BDUSS"])
    c.set("BAIDUID",cooks["BAIDUID"])
    s.cookies.update(c)
    # 判断是否登录成功
    r2 = s.get(url,headers=headers)
    if '我在谁身旁' in r2.text:
        print('登录成功')
    else:
        print("登录失败")

    执行结果:

    登录成功

    这个时候就可以做一些登录过后的操作。

    session模拟浏览器,浏览器中登录状态,只要浏览器不退出,就可以继续做其他的操作

     

  • 相关阅读:
    机器学习知识体系
    Request
    Http协议
    Servlet 学习
    Tomcat 服务器
    XML文件
    StringJdbc :jdbcTemplate
    Druid 数据库连接池
    c3p0配置文件(c3p0.properties.xml)解读
    数据库连接池 C3p0
  • 原文地址:https://www.cnblogs.com/qican/p/11153824.html
Copyright © 2011-2022 走看看