请求头详解——Headers
请求头定义:
客户端,即浏览器通过输入url后确定等于做了一次向服务器的请求动作,在这个请求里面带有请求参数,请求参数的集合即为请求头。
请求头的参数(常用的):
- Accept:浏览器可接收的文件类型
- Accept-Charset:浏览器可以接收的编码类型
- Accept-Encoding:浏览器可以接收的压缩编码类型
- Accept-Language:浏览器可以接收的语言和国家类型
- Host:请求的主机地址和端口
- If-Modified0-Since:页面的缓存时间
- Referer:请求来自哪个页面的url(防盗链)
- User-Agent:用户代理,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等等
- Cookie:浏览器暂存服务器发送的信息
- Connection:表示HTTP请求版本的特点
- Date:请求网站的时间
- Upgrade-Insecure-Requests:告诉服务器,浏览器可以处理HTTPS协议
- X-Requested-With:判断是否Ajax请求
要点:
- 一个标准的请求头基本上都带有以上属性
- 网络爬虫中,用户代理一般情况下是一定要添加的,因为反爬通常检测请求头的Referer和User-Agent,其他属性可以根据实际情况进行添加
- Cookie不能添加到请求头中
网页中的标准请求头(以百度首页为例):
- 点击F12,在出现的开发者工具中按Ctrl+R刷新
- 选中网络->全部->www.baidu.com->标头->请求标头
- 会得到如下请求头
Python中的请求头(以字典格式显示):
1 Headers = { 2 "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", 3 "Accept-Encoding":"gzip, deflate, br", 4 "Accept-Language":"zh-CN,zh;q=0.9", 5 "Cache-Control":"max-age=0", 6 "Connection":"keep-alive", 7 "Cookie":"BIDUPSID=BC40ABCFC55CAEBB40A1B38D53D9D83A; PSTM=1689932563; ZFY=5KdmWWi07wZbDhm0Nnm3OceuU7HDKPjfyw:BKIMIdKAg:C; jsdk-uuid=6b87a4d6-171e-40e8-8759-dfc4df2a1e25; BAIDUID=F765705D65C8FA866BA1B07CB00C4B89:FG=1; BD_HOME=1; H_PS_PSSID=36551_39109_39115_39121_39039_38917_38825_39087_26350_39138_39132_39100_39043; BAIDUID_BFESS=F765705D65C8FA866BA1B07CB00C4B89:FG=1; BD_UPN=12314753; BA_HECTOR=258185048h8424842l2l802m1ick4j61p", 8 "Host":"www.baidu.com", 9 "Referer":"https://cn.bing.com/", 10 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188" 11 }
如上并没有将开发者工具显示的请求头全部加入,网络爬虫根据需要添加即可
写在最后:
我是君妄,一名刚刚开始接触爬虫的小白,希望和大家学习交流,同时指正我的不足。