requests---session简介

  http协议是无状态的,也就是每一个请求都是独立的。那么登陆后的一系列动做,都须要用cookie来验证身份是不是登陆状态,为了高效的管理会话,保持会话,因而就有了session浏览器

 

session简介

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

 

session登陆

格式:cookie

# 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.举个例子,模拟百度登陆场景session

2.查看登陆后百度帐号的cookies值,通过观察发现是由”BAIDUID“和"BDUSS"函数

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

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

# 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("登陆失败")

执行结果:

登陆成功

这个时候就能够作一些登陆事后的操做。spa

session模拟浏览器,浏览器中登陆状态,只要浏览器不退出,就能够继续作其余的操做code

相关文章
相关标签/搜索