解读requests.session()获取Cookies全过程

目录
  • 通过requests.session()查看默认配置下请求头
  • 包装请求头,让他看起来更帅气
  • cookies获取过程
  • 总结

通过requests.session()查看默认配置下请求头

import requests

session = requests.session()

print("默认配置下的请求头:",session.headers.items())
# 默认配置下的请求头:
 ItemsView({'User-Agent': 'python-requests/2.21.0',
 'Accept-Encoding': 'gzip, deflate',
 'Accept': '*/*',
 'Connection': 'keep-alive'})"

我们可以看到在默认情况下,请求头的内容很机器,没有灵性

如果大家使用的IDE是Pycharm的话,ctrl+右键点击session.headers的headers查看源码。

得到如图:

使用的是default_headers()(默认请求头),这里我们依然看不到print打印在终端的内容,所以继续ctrl+右击点击default_headers()

得到如图:

OK! But it’s not over,这里我们还有User-Agentvalue没有看到,但是经过猜测我们不难得到default_user_agent()的内容就是python-requests/2.21.0

包装请求头,让他看起来更帅气

首先,了解对headers进行一个简单的增删改查操作

包装

包装我们的Headers

  • 方式一
headers = {
            'Origin': 'https://***.com',
            'Host': '***.com',
            'Referer': 'https://**.com/,
            'User-Agent': 'Mozilla/5.0',
        }
session.headers.update(headers)#字典的更新方法
  • 方式二

换一种大家都在用的方式,在请求的时候添加headers参数即可:

response = session.get(url, headers=headers)

验证两种方式是否得到的效果一样

  • 第一种方式

  • 第二种方式

结论:两种方式在response端看到的效果等同,区别在于第一种方式session是永久的,而第二种常用的方式只是在请求的时候携带过去的,所以当我们查看session的时候为空,那么这就有一个问题,我们在后续的请求中任然需要带上headers=这个参数,似乎它并没有那么好?

这是在github上copy 的部分爬虫代码如下:

连续带了两次Headers,这样没有什么不好,你开心就好~~~

cookies获取过程

  • 请求之前我们先清空Headers,Cookies内的信息
  • headers中仅写入user-agentCookies为空
  • 请求之后查看sessionCookies,得到响应端返回的cookies

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python requests模块session代码实例

    http协议本身是无状态的,为了让请求之间保持状态,有了session和cookie机制.requests也提供了相应的方法去操纵它们. requests中的session对象能够让我们跨http请求保持某些参数,即让同一个session对象发送的请求头携带某个指定的参数.当然,最常见的应用是它可以让cookie保持在后续的一串请求中. 下面,通过官方文档中的示例来了解如何使用它. import requests s = requests.Session() # 第一步:发送一个请求,用于设置请

  • Python中requests.session()的用法小结

    目录 session定义 session使用实例 参考文献 可能大家对 session 已经比较熟悉了,也大概了解了session的机制和原理,但是我们在做爬虫时如何会运用到session呢,就是接下来要讲到的会话保持. 首先说一下,为什么要进行会话保持的操作? session定义 requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象请求该网站的其他网页都会默认使用该session之前使用的c

  • Python模拟登录requests.Session应用详解

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学习所用. 登录特点:明文传输,有特殊标志数据 会话对象requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题.

  • python 实现Requests发送带cookies的请求

    一.缘 起 最近学习[悠悠课堂]的接口自动化教程,文中提到Requests发送带cookies请求的方法,笔者随之也将其用于手头实际项目中,大致如下 二.背 景 实际需求是监控平台侧下发消息有无异常,如有异常便触发报警推送邮件,项目中下发消息接口需要带cookies 三.说 明 脚本的工程名为ynJxhdSendMsg,大致结构如下图 sendMsg.py为主程序,函数checkMsg为在已发消息列表中查找已下发消息,函数sendMsg为发消息并根据结果返回对应的标识 sendAlertEmai

  • .net中的session与cookies区别及使用方法

    先介绍一下比较简单的使用方法: 给COOKIES赋值 复制代码 代码如下: Response.Cookies["uid"].Value = "20"; Response.Cookies["LoginCode"].Value = "58469"; 以上就是分别对两个COOKIES变量赋了两个不同的传,那么在使用COOKIES时,我们怎样来控制COOKIES的有效期呢,看下面:  复制代码 代码如下: Response.Cooki

  • Django框架设置cookies与获取cookies操作详解

    本文实例讲述了Django框架设置cookies与获取cookies操作.分享给大家供大家参考,具体如下: 在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的key, 很久以前,写过一篇 django怎么处理session 的文章:django 自定义session 处理, 今天对cookies 进行了同样的操作: from django.temp

  • python使用requests.session模拟登录

    最近开发一套接口,写个Python脚本,使用requests.session模拟一下登录. 因为每次需要获取用户信息,登录需要带着session信息,所以所有请求需要带着session. 请求使用post方式,请求参数类型为raw方式,参数为json类型. 登录接口参数和结果如下: 脚本如下: 1. 引入需要的第三方包 #! /usr/bin/env python3 # -*- coding: utf-8 -*- import requests # import re import json #

  • PHP CURL获取cookies模拟登录的方法

    要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了.利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302 跳转,而且是连续几十个302跳转,根本抓不了数据.因此,在发送搜索命令时,需要先提取 cookies 并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了.这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并

  • 对laravel的session获取与存取方法详解

    视图获取 session {{ Session::get('user_name') }} 一次性session(验证提示) $request->session()->flash('status','ok'); 从session中获取数据... $value = session('key'); 指定默认值... $value = session('key', 'default'); 存储数据到session... session(['key' => 'value']); 以上这篇对lara

  • requests.gPython 用requests.get获取网页内容为空 ’ ’问题

    目录 一.如何设置headers 1.QQ浏览器 2.Miscrosft edge 二.微软自带浏览器 下面先来看一个例子: import  requests result=requests.get("http://data.10jqka.com.cn/financial/yjyg/") result 输出结果: 表示成功处理了请求,一般情况下都是返回此状态码: 报200代表没问题 继续运行,发现返回空值,在请求网页爬取的时候,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止

  • java web项目Session获取不到问题及解决

    目录 java web项目Session获取不到 关于session的生命周期 前后端分离获取不到session问题 解决方案 java web项目Session获取不到 在servlet类中对Session进行了设置 但当servlet跳转到页面时 页面获取不到Session!!! 关于session的生命周期 Session保存在服务器端.Session在用户第一次访问服务器的时候自动创建.需要注意只有访问JSP.Servlet等程序时才会创建Session,只访问HTML.IMAGE等静态

  • 在.ashx文件中获取cookies值实现代码

    创建 复制代码 代码如下: HttpCookie cookies = new HttpCookie("validate"); cookies["validate"] = validateNum; Response.AppendCookie(cookies); 获取 复制代码 代码如下: if (context.Request.Cookies["validate"] != null) { validate = context.Request.Coo

随机推荐