一、请求头和响应头

http的headers头信息是分请求头和响应头之分的,请求头是客户端向服务端发送请求时,在头里带的内容,其一般包含:浏览器类型、语言、是否使用gzip压缩、传送的数据类型、用于认证的cookie或session值等。而响应头是服务器接到客户端的请求后,返回给客户端的信息,其一般包含页面过期时间、返回的数据类型、数据长度、一些cookie信息等。具体看下图:

requests-headers
requests-headers

二、requests查看响应头

响应头这个信息是我们无法改变的,这个是服务器端返回回来的,要修改响应头只能去服务器端修改。比如你访问百度,百度的服务器不会轻易给我们登陆,它返回的信息自然也是不我们能控制的。在request模块中,可以使用如下命令查看响应头:

1>>> import requests
2>>> r = requests.head('http://httpbin.org/get')
3>>> print(r.headers)
4{'X-XSS-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Content-Encoding': 'gzip', 'Server': 'nginx', 'Connection': 'keep-alive', 'Access-Control-Allow-Credentials': 'true', 'Date': 'Thu, 23 May 2016 03:59:33 GMT', 'Access-Control-Allow-Origin': '*', 'Referrer-Policy': 'no-referrer-when-downgrade', 'Content-Type': 'application/json', 'X-Frame-Options': 'DENY'}
5>>> r.headers['Content-Type']
6'application/json'

三、自定义请求头

比如我们要模拟浏览器进行页面请求时,就可以将请求头里的信息加到自定义的headers参数里,具体如下:

1headers = {'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
2               'Accept - Encoding':'gzip, deflate',
3               'Accept-Language':'zh-Hans-CN, zh-Hans; q=0.5',
4               'Connection':'Keep-Alive',
5               'Host':'zhannei.baidu.com',
6               'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'}
7r = requests.get('https://blog.361way.com',headers=headers, timeout=3)