Requests方法 -- 重定向操作

Teachertao 2019-07-07 原文

Requests方法 — 重定向操作

一、重定向
1. (Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置,从地址A跳转到地址 B 了。
2.重定向状态码:
–301 redirect: 301 代表永久性转移(Permanently Moved)
–302 redirect: 302 代表暂时性转移(Temporarily Moved )
3.举个简单的场景案例,先登录博客园打开我的博客首页,进我的随笔编辑界面,记住这个
地址:https://i.cnblogs.com/EditPosts.aspx?opt=1
4.退出博客园登录,把刚才我的随笔这个地址输入浏览器回车,抓包会看到这个请求状态码是 302,浏览器地址栏瞬间刷新跳到登录首页去了

 

二、禁止重定向(allow_redirects )
1.用 get 方法请求:https://i.cnblogs.com/EditPosts.aspx?opt=1
2.打印状态码是 200,这是因为 requets 库自动处理了重定向请求了,默认是allow_redirects=True 是启动重定向

3.自动处理重定向地址后,我们就获取不到重定向后的 url 了,就无法走下一步,这里我们可以设置一个参数禁止重定向:allow_redirects=False
(allow_redirects=True 是启动重定向),然后就可以看到 status_code 是 302 了

三、获取重定向后地址
1.在第一个请求后,服务器会下发一个新的请求链接,在 response 的 headers 里,如下抓包:Location

2.用脚本去获取 Location 地址

 

四、代码参数

import requests
#禁用安全请求警告
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

url = “https://i.cnblogs.com/EditPosts.aspx?opt=1”
headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36”
}
s = requests.Session()
#打开我的随笔
r = s.get(url,headers=headers,verify=False,allow_redirects=False)
# print(r.content.decode(“utf-8”))
#打印状态码,自动处理重定向请求
print(r.status_code)
#获取重定向后的地址
print(r.headers[“Location”])

发表于 2019-07-07 16:23 Teacher涛 阅读() 评论() 编辑 收藏

 

版权声明:本文为Teachertao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Teachertao/p/11146631.html

Requests方法 -- 重定向操作的更多相关文章

  1. Http 400 Bad Request 错误的一种可能原因

    请求失败示例 如下图所示,出现了 Status Code:Http 400 Bad Request 的错误。 […]...

  2. eclipse 提交代码到SVN服务器失败,报org.apache.subversion.javahl.ClientException: RA layer request failed svn: Commit failed (details follow)

    报错:org.apache.subversion.javahl.ClientException: RA lay […]...

  3. Requests 方法 — post请求操作实践

    Requests 方法 — post请求操作实践 1、登录Jenkins抓包 ,小编的Jenkin […]...

  4. Requests方法 — cookie绕过验证码登录操作

    Requests方法 — cookie绕过验证码登录操作 前言有些登录的接口会有验证码:短信验证码 […]...

  5. HTTP 400 错误 – 请求无效 (Bad request)

    HTTP 400 错误 – 请求无效 (Bad request)在ajax请求后台数据时有时会报 […]...

  6. Python request 和response 初使用

    request的get方法r=request.get(url)构造一个向服务器请求资源的Request对象, […]...

  7. 如何实现 axios 的自定义适配器 adapter

    我们想基于 axios 扩展一些自己的数据请求方式,并能够使用上 axios 提供的便捷功能,该怎么自定义一个 […]...

  8. 好代码是管出来的——使用GitHub

      前面的文章介绍了Git的基本概念和用法,本文则是基于GitHub的一个实践介绍,主要内容有: GitHub […]...

随机推荐

  1. php操作memcache的用法、详解和方法介绍

    1.简介 memcache模块是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是 […]...

  2. SpringBoot基本配置详解

    SpringBoot项目有一些基本的配置,比如启动图案(banner),比如默认配置文件application […]...

  3. Google SEO & HTML5 Video Poster All In One

    Google SEO & HTML5 Video Poster All In One海报 / 缩略图poster A URL for an image to be shown while the video is downloading....

  4. x86与x64与x86_64

    x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有 […]...

  5. 什么是人工智能核心?这2个功能上线

      什么是人工智能核心?这2个功能上线   deepmind与加州旧金山人工智能研究机构,内部通过开发人工智能 […]...

  6. win 10 提升权限

    win 10 提升权限 问题:每次打开Visual Studio 提示,需要重启以获取管理员权限 解决: 1、 […]...

  7. vue学习笔记-遗留问题记录

    Node.js是什么?对node.js的理解 官网解释:Node.js 是一个基于 Chrome V8 引擎的 […]...

  8. .NetCore对接各大财务软件凭证API——金蝶系列(2)

    一.前言 今天我们来分析金蝶系列的第二个产品—K3wise,财务版本为15.0.不过好像14.3以 […]...

展开目录

目录导航