在python的requests文库中介绍到了重定向,并解释了重定向的用法,但是对于我们这些小白来说,重定向意味着什么,重定向作用是什么?
于是今天便深入研究requests模块重定向深入用法
谈到重定向,这里要从http状态码谈起。
状态码
状态码是网页服务器http响应的3位数字代码。
常见状态码分为
状态码 | 内容 |
---|---|
200 | 请求成功,服务器已经将请求的响应头和数据返回 |
201 | 请求成功,服务器已经创建新的资源,并将数据返回 |
202 | 请求成功,但是服务器尚未处理 |
301 | 请求成功,服务器将请求资源永久转移到新的位置,并且下次会自动转移到新的位置 |
302 | 请求成功,服务器将请求资源临时转移到新的位置,但是下次访问请求者会访问原来的位置 |
304 | 请求成功,但是服务器不会做任何的修改,也不会返回任何响应内容 |
401 | 服务器需要验证身份才能相应 |
403 | 服务器收到请求,但是拒绝返回信息 |
404 | 请求失败,服务器没有找到任何关于响应的内容 |
501 | 服务器无法完成对请求的处理 |
503 | 服务器午饭完成对请求的处理,也许是过载的问题,但是一会儿就会恢复 |
ps(吐槽一下,学校服务器水做的,选课的时候常常响应503)
回归正题,requests重定向表示的是响应码301和响应码302,比如,我们在访问
"http://www.baidu.com"的时候服务器会返回一个301永久重定向的状态码,大家都知道http是不安全的,https足够安全,所以百度服务器会讲浏览器永久重定向到"https://www.baidu.com"中,以后访问浏览器会直接访问新地址。
而302是零时重定向就是零时转移地址,下一次还会访问这个地址,一个通俗易懂的方法就是
301重定向:在现实生活中我们搬家了,以后朋友想找你玩,就去你新家
302重定向:现实生活中,朋友找你玩,你在二狗家玩,朋友就去二狗那边找你,但是下次来还会到你家找你。
我们在requets进行模拟登陆的时候,有时候服务器会自动重定向到新的网页,,比如,有的网站有广告,这些广告奇烦无比,会自动帮你访问的网站转移到新的网站,如果我们想访问之前的网页,怎么做?
就在我们requests.get(url)中添加allow_redirects=False,python默认情况下是True
ps(访问有认证的网页,只需要自定义请求头就可以了,比如,爬qq邮箱的时候。)