• requests---重定向


      通常我们抓包的过程中,都会看到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

  • 相关阅读:
    小知识点随手记
    [学习笔记]行列式
    集群心跳机制
    [学习笔记]整数划分数
    如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1)
    [学习笔记]二叉树的遍历
    Oracle RAC/Clusterware 多种心跳heartbeat机制介绍 RAC超时机制分析
    bzoj4671: 异或图——斯特林反演
    为Oracle Clusterware修改公用及私有网络接口
    [学习笔记]斯特林反演
  • 原文地址:https://www.cnblogs.com/qican/p/11233945.html
Copyright © 2020-2023  润新知