什么是重定向
简单的理解:打开一个URL跳转到另外个URL了,例如我们复制登录后地址到浏览器中打开,会跳转到登录页面,这既重定向。
常用的重定向方式有:301 redirect、302 redirect与meta fresh。
--301 redirect::301 代表永久性转移(Permanently Moved)
--302 redirect::302 代表暂时性转移(Temporarily Moved )
--meta fresh:其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之内),会被判断为spam。
默认情况下,除了 HEAD, Requests 会自动处理所有重定向。
可以使用响应对象的 history 方法来追踪重定向
来看个例子
登录后百度的地址:http://i.baidu.com/
返回了200,是因为requests 默认开启了重定向,地址指向:http://i.baidu.com/welcome
禁用重定向
如果你使用的是GET、OPTIONS、POST、PUT、PATCH 或者 DELETE,那么你可以通过 allow_redirects 参数禁用重定向处理:allow_redirects=False
返回302
获取未被重定向的地址
在设置成allow_redirects=False 后,我们打印出返回的response的headers中location地址
示例代码
# -*- coding:utf-8 -*-
importrequests
r = requests.get('http://i.baidu.com/',allow_redirects=False)
print(r.url)
print(r.status_code)
print(r.headers)
print(r.headers["location"])
领取专属 10元无门槛券
私享最新 技术干货