Requests教程-11-重定向与请求历史

领取资料,咨询答疑,请➕wei:  June__Go

上小节中,我们学习了requests的Session会话对象,本小节我们讲解一下requests的重定向与请求历史。

重定向的定义:

重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

重定向的使用场景:

1.网站调整(如改变网页目录结构)

2.网页被移到一个新地址

3.网页扩展名改变(如应用需要把.php改成.Html或.shtml)

这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

重定向划分:

301 redirect---》永久性重定向、302 redirect---》暂时性重定向,比如下图的302永久性重定向

默认情况下,requests发送的请求除了方式为HEAD之外,其余的请求例如GET、POST等都是能自动进行重定向的。

请求历史与重定向追踪

关于请求历史记录,requests库提供了history属性来保存每次请求的历史记录。可以通过查看response.history列表来获得之前经过的重定向路径。示例如下

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
}

r = requests.get("http://www.360buy.com", headers=headers)

print("历史请求过程信息:")
print(r.history)
for one_info in r.history:
    print(one_info.status_code, one_info.url, one_info.headers)

print("\n\n最后一次的请求信息:")
print(r.status_code, r.url, r.headers)

运行结果如下:

历史请求过程信息:
[<Response [301]>, <Response [302]>]
301 http://www.360buy.com/ {'Server': 'nginx', 'Date': 'Wed, 03 Jan 2024 09:38:25 GMT', 'Content-Type': 'text/html', 'Content-Length': '178', 'Connection': 'keep-alive', 'Location': 'http://www.jd.com/', 'Age': '1342', 'Via': 'http/1.1 ORI-CLOUD-HUZ-MIX-16 (jcs [cRs f ]), http/1.1 AHwuhu-UNI-1-MIX-168 (jcs [cSsSfU])', 'Access-Control-Allow-Origin': '*', 'Timing-Allow-Origin': '*', 'X-Trace': '301-1704273363325-0-0-0-0-0;301-1704274705923-0-0-0-1-1;301-1704274705917-0-0-0-22-22'}
302 http://www.jd.com/ {'Server': 'nginx', 'Date': 'Wed, 03 Jan 2024 09:38:25 GMT', 'Content-Type': 'text/html', 'Content-Length': '138', 'Connection': 'keep-alive', 'Location': 'https://www.jd.com/', 'Timing-Allow-Origin': '*', 'X-Trace': '302-1704274705996-0-0-0-0-0', 'Strict-Transport-Security': 'max-age=3600'}


最后一次的请求信息:
200 https://www.jd.com/ {'Server': 'nginx', 'Date': 'Wed, 03 Jan 2024 09:38:26 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '61627', 'Connection': 'keep-alive', 'Vary': 'Accept-Encoding', 'init-worker-firstscreen': 'off', 'init-worker-mobile-ua-check': 'on', 'init-worker-mobile-ua-check-rate': 'on', 'init-worker-forbid-method': 'on', 'init-worker-ump-reffer': 'on', 'init-worker-pageconfig': 'on', 'init-worker-jsversion': 'on', 'init-worker-jsversion-new': 'on', 'init-worker-miaoshaRefreshTime': 'on', 'init-worker-navitems-hide-switch': 'on', 'init-worker-double-cookie-white-list': 'on', 'init-worker-double-cookie-switch': 'on', 'init-worker-image-layer-switch': 'on', 'init-worker-page-maxAge': 'on', 'Cache-Control': 'max-age=60', 'Expires': 'Wed, 03 Jan 2024 09:39:00 GMT', 'Origin-Agent-Cluster': '?0', 'Content-Encoding': 'gzip', 'ser': '8.69', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'X-Frame-Options': 'SAMEORIGIN', 'Age': '11', 'Via': 'http/1.1 ORI-CLOUD-HUZ-MIX-29 (jcs [cMsSfW]), http/1.1 JS-UNI-2-MIX-222 (jcs [cRs f ])', 'Timing-Allow-Origin': '*', 'X-Trace': '200-1704274695501-0-0-16-47-47;200-1704274695455-0-0-0-71-71;200-1704274706057-0-0-0-1-1', 'Strict-Transport-Security': 'max-age=3600'}


重定向的重启和禁用

在发送请求的时候,可以通过如下的设置,取消/重启requests模块的自动重定向功能

requests.get(url, allow_redirects=False)

其中,allow_redirects字段为True时代表开启重定向,requsets默认为True,为False时代表禁用重定向,以下是禁止重定向的一个示例

import requests
r = requests.get('http://github.com', allow_redirects=False)
print(r.status_code)
print(r.history)

运行结果如下:

301
[]

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走,希望可以帮助到大家!领取资料,咨询答疑,请➕wei:  June__Go

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/398016.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32 TIM输入捕获测频率占空比库函数

目录 一、输入捕获初始化函数 TIM_ICInit TIM_PWMIConfig TIM_ICStructInit 二、主从触发模式对应函数 TIM_SelectInputTrigger TIM_SelectOutputTrigger TIM_SelectSlaveMode 三、配置分频器函数 TIM_SetIC1Prescaler TIM_SetIC2Prescaler TIM_SetIC3Prescaler T…

浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用

摘要&#xff1a;本文分析了木材加工企业的特点、现状及常见电气火灾隐患&#xff0c;提出了消灭电气火灾隐患的措施。结尾介绍了木材加工企业常用电气设备的选用及电气火灾监控系统在其低压配电系统的应用方案及产品选型。 关键词&#xff1a;木材加工企业&#xff1b;电气火…

kafka的安装,用于数据库同步数据

1.0 背景调研 因业务需求&#xff0c;需要查询其他部门的数据库数据&#xff0c;不方便直连数据库&#xff0c;所以要定时将他们的数据同步到我们的环境中&#xff0c;技术选型选中了kafkaCDC Kafka是Apache旗下的一款分布式流媒体平台&#xff0c;Kafka是一种高吞吐量、持久…

微服务—RabbitMQ高级(延迟消息)

本博客为个人学习笔记&#xff0c;学习网站&#xff1a;2023黑马程序员RabbitMQ入门到实战教程 高级篇章节 目录 延迟消息 死信交换机 延迟消息插件 下载安装 延迟交换机声明 ​编辑 发送延迟消息 订单状态同步问题 延迟消息 在电商的支付业务中&#xff0c;对于一些库…

基于springboot学生就业管理系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;学生就业管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而…

word中插入代码

可以先把代码在highlightcode 中格式化后复制插入 highlightcode地址&#xff1a;https://highlightcode.com/ 复制到word后效果&#xff0c;可以看到美观多了 原始效果

Java面试题:volatile专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第4篇文章,我们一起来看看面试中会问到哪些关于volatile的问题吧。数据来源: 大部分来自于各机构(Java之父,Java继父,某灵,某泡,某客)以及各博主整理文档…

基于uniapp微信小程序的汽车租赁预约系统

随着现代汽车租赁管理的快速发展&#xff0c;可以说汽车租赁管理已经逐渐成为现代汽车租赁管理过程中最为重要的部分之一。但是一直以来我国传统的汽车租赁管理并没有建立一套完善的行之有效的汽车租赁管理系统&#xff0c;传统的汽车租赁管理已经无法适应高速发展&#xff0c;…

leetcode面试题 02.07. 链表相交

leetcode面试题 02.07. 链表相交 题目 思路 方案一&#xff1a;使用哈希表储存一个链表节点&#xff0c;在另一个链表进行查询是否有相同节点方案二&#xff1a;统计两个链表长度&#xff0c;然后末尾对齐&#xff0c;判断是否有相同节点 代码 使用哈希表set # Definition…

新手搭建服装小程序全攻略

随着互联网的快速发展&#xff0c;线上购物已经成为了人们日常生活中不可或缺的一部分。服装作为人们日常消费的重要品类&#xff0c;线上化趋势也日益明显。本文将详细介绍如何从零开始搭建一个服装小程序商城&#xff0c;从入门到精通的捷径&#xff0c;帮助你快速掌握小程序…

compile 未产生 target 目录

Problem 执行compile操作之后未产生对应的target目录 右击Project → Tree Appearance → Show Excluded Files

vue3项目配置按需自动导入API组件unplugin-auto-import

场景应用&#xff1a;避免写一大堆的import&#xff0c;比如关于Vue和Vue Router的 1、安装unplugin-auto-import npm i -D unplugin-auto-import 2、配置vite.config import AutoImport from unplugin-auto-import/vite//按需自动加载API插件 AutoImport({ imports: ["…

C# Winfrom实现的肺炎全国疫情实时信息图

运行结果&#xff1a; using System; using System.Drawing; using System.Text; using NSoup; using NSoup.Nodes; using System.IO; using System.Net; using System.Text.RegularExpressions; using System.Windows.Forms;namespace Pneumonia {public partial class MainFo…

Arcmap excel转shp

使用excel表格转shp的时候&#xff0c;如果你的excel里面有很多字段&#xff0c;直接转很大概率会出现转换结果错误的情况&#xff0c;那么就需要精简一下字段的个数。将原来的表格文件另存一份&#xff0c;在另存为的文件中只保留关键的经度、纬度、和用于匹配的字段即可&…

Java基于SpringBoot+Vue的图书管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

阿里云幻兽帕鲁Windows 服务器怎么上传存档文件?

通过控制台远程连接到 Windows 服务器桌面后&#xff0c;你可以打开文件夹&#xff0c;将本地的存档 zip 文件&#xff0c;直接拖拽到浏览器中&#xff0c;即可将存档文件传到服务器中的 workbench 文件交换目录。 替换存档前要先停止服务。 然后将 Saved.zip 文件解压&#xf…

芋道-------如何实现工作流退回后重新提交到之前退回的节点

一、概述 上一节&#xff0c;我们讲过了工作流如何退回到申请人&#xff0c;接下来我们来讲一讲&#xff0c;如何重新提交。这里重新提交可以是再走一遍正常流程&#xff0c;同时也可以是直接跳过中间的步骤&#xff0c;直接继续给上一步退回的人审批。文章中会提及这两种情况。…

4.5 Verilog 条件语句

关键词&#xff1a;if&#xff0c;选择器 条件语句 条件&#xff08;if&#xff09;语句用于控制执行语句要根据条件判断来确定是否执行。 条件语句用关键字 if 和 else 来声明&#xff0c;条件表达式必须在圆括号中。 条件语句使用结构说明如下&#xff1a; if (conditio…

软件自动化运行工具开发需要用到的代码!

在软件开发领域&#xff0c;自动化运行工具扮演着至关重要的角色&#xff0c;这些工具不仅提高了开发效率&#xff0c;还降低了人为错误的风险&#xff0c;为了实现软件自动化运行&#xff0c;开发者需要掌握一系列编程语言和工具&#xff0c;并编写相应的代码。 本文将分享一…

Nginx网络服务

一、Nginx概述 1.1Nginx介绍 Nginx&#xff1a; 一款高新能、轻量级Web服务软件稳定性高系统资源消耗低对HTTP并发连接的处理能力高单台物理服务器可支持30 000&#xff5e;50 000个并发请求。 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器&#xff0c;而且支持热部…