Python小白学习爬虫常用请求报头


Posted in Python onJune 03, 2020

客户端HTTP请求

URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括以下格式:

请求行、请求头部、空行、请求数据

一个典型的HTTP请求

GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 
Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh,zh-CN;q=0.8,ar;q=0.6,zh-TW;q=0.4
Cookie: BAIDUID=AE4D1DA6B2D6689BB8C557B3436893E3:FG=1; BIDUPSID=AE4D1DA6B2D6689BB8C557B3436893E3; PSTM=1501466227; 
BD_UPN=12314353; BD_CK_SAM=1; PSINO=1; H_PS_PSSID=1420_25548_21080_20929; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; 
BDSVRTM=0

常用请求报头

1. Host (主机和端口号)

Host:对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于URL的一部分。

2. Connection (链接类型)

Connection:表示客户端与服务连接类型。

Client 发起一个包含 Connection:keep-alive 的请求,HTTP/1.1使用 keep-alive 为默认值。

Server收到请求后:

如果 Server 支持 keep-alive,回复一个包含 Connection:keep-alive 的响应,不关闭连接;

如果 Server 不支持 keep-alive,回复一个包含 Connection:close 的响应,关闭连接。

如果client收到包含 Connection:keep-alive 的响应,向同一个连接发送下一个请求,直到一方主动关闭连接。

keep-alive在很多情况下能够重用连接,减少资源消耗,缩短响应时间,比如当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都去请求建立连接。

3. Upgrade-Insecure-Requests (升级为HTTPS请求)

Upgrade-Insecure-Requests:升级不安全的请求,意思是会在加载 http 资源时自动替换成 https 请求,让浏览器不再显示https页面中的http请求警报。

HTTPS 是以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 HTTP 请求,一旦出现就是提示或报错。

4. User-Agent (浏览器名称)

User-Agent:是客户浏览器的名称,以后会详细讲。

5. Accept (传输文件类型)

Accept:指浏览器或其他客户端可以接受的MIME(Multipurpose Internet Mail Extensions(多用途互联网邮件扩展))文件类型,服务器可以根据它判断并返回适当的文件格式。

举例:

Accept: */*:表示什么都可以接收。

Accept:image/gif:表明客户端希望接受GIF图像格式的资源;

Accept:text/html:表明客户端希望接受html文本。

Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示浏览器支持的 MIME 类型分别是 html文本、xhtml和xml文档、所有的图像格式资源。

q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值,则默认为1,按从左到右排序顺序;若被赋值为0,则用于表示浏览器不接受此内容类型。

Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;Application:用于传输应用程序数据或者二进制数据。详细请点击

6. Referer (页面跳转处)

Referer:表明产生请求的网页来自于哪个URL,用户是从该 Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面,是从什么网站来的等。

有时候遇到下载某网站图片,需要对应的referer,否则无法下载图片,那是因为人家做了防盗链,原理就是根据referer去判断是否是本网站的地址,如果不是,则拒绝,如果是,就可以下载;

7. Accept-Encoding(文件编解码格式)

Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式,许多情形下这可以减少大量的下载时间。

举例:Accept-Encoding:gzip;q=1.0, identity; q=0.5, *;q=0

如果有多个Encoding同时匹配, 按照q值顺序排列,本例中按顺序支持 gzip, identity压缩编码,支持gzip的浏览器会返回经过gzip编码的HTML页面。 如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。

8. Accept-Language(语言种类)

Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us指英语,zh或者zh-cn指中文,当服务器能够提供一种以上的语言版本时要用到。

9. Accept-Charset(字符编码)

Accept-Charset:指出浏览器可以接受的字符编码。

举例:

Accept-Charset:iso-8859-1,gb2312,utf-8

ISO8859-1:通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符,英文浏览器的默认值是ISO-8859-1.

gb2312:标准简体中文字符集;

utf-8:UNICODE 的一种变长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。

如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。

10. Cookie (Cookie)

Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能,以后会详细讲。

11. Content-Type (POST数据类型)

Content-Type:POST请求里用来表示的内容类型。

举例:Content-Type = Text/XML; charset=gb2312:

指明该请求的消息体中包含的是纯文本的XML类型的数据,字符编码采用“gb2312”。

到此这篇关于Python小白学习爬虫常用请求报头的文章就介绍到这了,更多相关Python爬虫常用请求报头详解内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的并发编程实例
Jul 07 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
解读Python编程中的命名空间与作用域
Oct 16 Python
Python装饰器用法实例分析
Jan 14 Python
python绘制随机网络图形示例
Nov 21 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
python中提高pip install速度
Feb 14 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
python利用opencv保存、播放视频
Nov 02 Python
python中绕过反爬虫的方法总结
Nov 25 Python
python解包概念及实例
Feb 17 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 Python
Python新手学习函数默认参数设置
Jun 03 #Python
python seaborn heatmap可视化相关性矩阵实例
Jun 03 #Python
Python新手学习raise用法
Jun 03 #Python
Django实现任意文件上传(最简单的方法)
Jun 03 #Python
Python flask框架如何显示图像到web页面
Jun 03 #Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 #Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 #Python
You might like
php中的实现trim函数代码
2007/03/19 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python中模块与包有相同名字的处理方法
2017/05/05 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
python3实现逐字输出的方法
2019/01/23 Python
python创建学生管理系统
2019/11/22 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
.NET方向面试题
2014/11/20 面试题
大学新闻系求职信
2014/06/03 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
安全生产奖惩制度
2015/08/06 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
python3 字符串str和bytes相互转换
2022/03/23 Python