通常我们抓包的过程中,都会看到302的状态码,那么这个过程发生了什么?

什么是重定向

就是通过各种方法将各种网络请求重新定个方向转到其它位置,本来应该从a出发到达b但是最终到达了c,这种场景就叫做重定向了

重定向状态码

说到重定向,肯定少不了http的状态码

300:请求的资源对应于表示形式集合中的某种表示形式,每种表示形式都有自己的特定位置
301:指示已经将资源永久地移动到了某个新位置,并且将来的引用应将新 URI 用于其请求
302:指示已经将资源暂时地移动到了另一个位置,但将来的引用仍应使用原来的 URI 访问该资源。 保留此定义是为了向后兼容。SC_FOUND 现在是首选定义
303:指示可在另一个 URI 之下找到该请求的响应
304:指示条件 GET 操作发现资源可用但不可修改
305:指示必须 通过 Location 字段给定的代理访问请求资源
307:指示请求的资源暂时驻留在另一个 URI 之下。临时 URI 应该 通过响应中的 Location 字段提供

如何处理重定向

当我们遇到这种重定向,我们应该怎么处理?

# request源码中
param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``.
:type allow_redirects: bool

发现requests中默认是True,是允许重定向的。

# coding:utf-8
import requests
url = 'http://github.com'
# 重定向为False
r = requests.get(url,allow_redirects=False)
print(r.status_code)
print(r.url) 代码结果:
301
http://github.com/

在默认开启的状态下,我们如何知道请求过程中有没有发现重定向呢?

requests返回中history可以帮我们解决

# coding:utf-8
import requests
url = 'http://github.com'
# 重定向为True
r = requests.get(url,allow_redirects=True)
print(r.status_code)
print(r.history) 代码结果:
200
[<Response [301]>]

发现如果我们允许重定向返回的状态码为200,通过查看历史请求状态码,发现中间请求过301

requests---重定向的更多相关文章

  1. Python+requests重定向和追踪

    Python+requests重定向和追踪 一.什么是重定向 重定向就是网络请求被重新定个方向转到了其它位置 二.为什么要做重定向 网页重定向的情况一般有:网站调整(如网页目录结构变化).网页地址改变 ...

  2. requests库的使用

     requests库的使用 pip快速安装 pip install requests 请求方法 每一个请求方法都有一个对应的API,比如GET请求就可以使用get()方法: import reques ...

  3. 爬虫(2) - Requests(1) | Requests模块的深度解析

    1.Requests 安装与请求方法 requests官方文档:https://docs.python-requests.org/zh_CN/latest/,官方文档不知道为什么挂了,访问不了.我找了 ...

  4. 在 Qualys SSL Labs SSL 测试中获得 A+ 评级的秘技 2021 版

    本系列文章将阐述主流应用交付控制器和主流 Web 服务器如何运行 HTTP/2 和 TLSv1.3 协议,以及如何在 SSL Test 中获得 A+ 评级. 请访问原文链接:https://sysin ...

  5. 爬虫3 requests基础2 代理 证书 重定向 响应时间

    import requests # 代理 # proxy = { # 'http':'http://182.61.29.114.6868' # } # res = requests.get('http ...

  6. Python requests 301/302/303重定向(跨域/本域)cookie、Location问题

    今天使用request的get方法获取一个网站的登录页信息,结果使用charles抓包的时候发现该网站登录页303(重定向的问题),网上查了很多资料,原因如下: 一.cookie 原因:利用reque ...

  7. python接口自动化: CAS系统验证,自动完成登录并获取token,遇到302请求重定向设置(requests模块 allow_redirects=False)即可

    import requestsimport re import requests import re class Crm_token(object): try: username=int(input( ...

  8. 人性化的Requests模块(响应与编码、header处理、cookie处理、重定向与历史记录、代理设置)

    Requests库是第三方模块,需要额外进行安装.Requests是一个开源库 pip install requests 去GitHub下载回来,进入解压文件,运行setup.py 比urllib2实 ...

  9. requests禁止重定向

    response = requests.get( 'http://weixin.sogou.com/weixin?query=%E9%A3%8E%E6%99%AF&type=2&pag ...

  10. 爬虫requests模块 1

    让我们从一些简单的示例开始吧. 发送请求¶ 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试 ...

随机推荐

  1. RDIFramework.NET敏捷开发框架Web新增邮件中心实现便捷式的邮件收发

    1.引言 邮件收发在很多业务系统中都有这样的需求,是比较正式和常用的功能.在我们的框架中提供了邮件中心功能模块,集内部邮件的收发.邮件归类.邮件星标的标记.邮件的删除与彻底删除等,邮件中心功能模块界面 ...

  2. nginx——keepalived

    nginx--keepalived 1.keepalived高可用基本概述 什么是高可用 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用 ...

  3. 201871010107-公海瑜《面向对象程序设计(java)》第一周学习总结

    201871010107-公海瑜<面向对象程序设计(java)>第一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/   ...

  4. javascript中的闭包、函数的toString方法

    闭包: 闭包可以理解为定义在一个函数内部的函数, 函数A内部定义了函数B, 函数B有访问函数A内部变量的权力: 闭包是函数和子函数之间的桥梁: 举个例子: let func = function() ...

  5. python-15-常用文件操作与注册登录练习

    前言 1.常用的文件操作无非就是读或写,但python中没有提供文件修改的功能,是无法实现,但我们可以新增-删除源文件-更改新增文件为源文件名称. 2.使用文件的存储与读取方式来简单完成注册.登录功能 ...

  6. SQL Server设置数据库为状态为只读

    问题描述: 有时候我们为了防止连接数据库再链接插入数据,就可以把库设置为只读模式 灰色后面显示只读说明已经是只读状态了 1.设置为只读状态 USE [master] GO ALTER DATABASE ...

  7. 【计算机网络】UDP基础知识总结

    1. UDP概念相关 [!NOTE] UDP(User Datagram Protocol),又叫用户数据报协议. UDP是一个无连接的.不可靠.基于数据报的传输协议.UDP只是报文(报文可以理解为一 ...

  8. Octave Convolution详解

    前言 Octave Convolution来自于这篇论文<Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural ...

  9. Django中的response

    render_to_response render_to_response('index.html', locals(),context_instance=RequestContext(request ...

  10. python基础(30):黏包、socket的其他方法

    1. 黏包 1.1 黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接 ...