python中requests模拟登录的三种方式(携带cookie/session进行请求网站)

 更新时间:2020年11月17日 11:32:52   作者:蒋程扬  
这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一,cookie和session的区别

cookie在客户的浏览器上,session存在服务器上
cookie是不安全的,且有失效时间
session是在cookie的基础上,服务端设置session时会向浏览器发送设置一个设置cookie的请求,这个cookie包括session的id当访问服务端时带上这个session_id就可以获取到用户保存在服务端对应的session

二,爬虫处理cookie和session

带上cookie和session的好处:
能够请求到登录后的界面 

带上cookie和session的弊端:
一个cookie和session往往和一个用户对应,访问太快容易被服务器检测出来爬虫 

不需要cookie的时候尽量不要用

三,处理session,cookie请求

1,cookie请求方式

1.1 直接使用浏览器抓包到的现有的cookie进行访问网站:
 放在header字典里面

header={
"User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linu…) Gecko/20100101 Firefox/64.0",
"Cookie":"csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj",
}
r=request.get(url,headers=header)

当然也可以在发送get请求时加上cookies的字典参数:

Cookie="csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj"

但是接受的参数是字典类型的,这就需要我们适用字符串分割方法把cookie字符串转为字典形式:

Cookie="csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj"
cookies={i.split("=")[1]:i.split("=")[1] for i in Cookie.split("; ")} 
#先使用for循环遍历Cookie以”; “(分号和空格)分开的列表 再分别获取i以等号分割的列表的[0] [1] 位置填入 字典键 和值的位置
r=request.get(url,headers=header,cookies=cookies)

适用于cookie过期时间比较长的网站

2.session请求方式
request提供了一个一个叫做session的类,来实现客户端和服务端的会话保持
 使用方法:
1.实例化一个session对象
2.让session发送get或post请求
3.再使用session访问只有登录之后才能访问的网站,这时候session会自动带上服务器保存在其中的信息进行访问

session=request.session() #实例化session对象
response=session.get(url,header) #使用session对象发送get请求 就能获取服务端设置的session对象

到此这篇关于python中requests模拟登录的三种方式(携带cookie/session进行请求网站)的文章就介绍到这了,更多相关python requests模拟登录 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+Pandas实现数据透视表

    Python+Pandas实现数据透视表

    对于数据透视表,相信对于Excel比较熟悉的小伙伴都知道如何使用它。本文将利用Python Pandas实现数据透视表功能,感兴趣的可以学习一下
    2022-06-06
  • python实现获取电脑所连接的wifi密码

    python实现获取电脑所连接的wifi密码

    电脑连接wifi后,很难直观地看到当前连接wifi的密码,需要借助命令行公管局才可以查看到相关信息,本文为大家介绍一下如何利用python获取电脑所连接的wifi密码,感兴趣的可以了解下
    2023-11-11
  • Python中__new__与__init__方法的区别详解

    Python中__new__与__init__方法的区别详解

    这篇文章主要介绍了Python中__new__与__init__方法的区别,是Python学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Linux系统中设置Python程序开机启动的两种方式

    Linux系统中设置Python程序开机启动的两种方式

    在 Linux 系统中设置Python 脚本开机启动,通常可以通过以下几种方式实现, 使用 systemd(推荐方式)和使用 crontab(对于简单任务),文章通过代码示例给大家讲解的非常详细,需要的朋友可以参考下
    2024-05-05
  • Pandas之使用drop_duplicates:去除重复项

    Pandas之使用drop_duplicates:去除重复项

    这篇文章主要介绍了Pandas之使用drop_duplicates:去除重复项方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • python中get和post有什么区别

    python中get和post有什么区别

    在本篇内容里小编给大家分享的是关于python中get和post有什么区别的相关内容,需要的朋友们参考下吧。
    2020-06-06
  • python图形开发GUI库wxpython使用方法详解

    python图形开发GUI库wxpython使用方法详解

    这篇文章主要介绍了python GUI库wxpython使用方法详解,需要的朋友可以参考下
    2020-02-02
  • 浅谈Python数学建模之固定费用问题

    浅谈Python数学建模之固定费用问题

    本文主要介绍了Python固定费用问题的建模与求解。学习 PuLP工具包中处理复杂问题的快捷使用方式
    2021-06-06
  • 一起来学习一下python的数字类型

    一起来学习一下python的数字类型

    这篇文章主要为大家详细介绍了python的数字类型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python计算日期之间的放假日期

    python计算日期之间的放假日期

    这篇文章主要为大家详细介绍了python计算日期之间的放假日期,实现自动查询节日,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论