Python爬虫中,如何深入理解HTTP协议及其相关知识点?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2806个文字,预计阅读时间需要12分钟。
1. 什么是HTTP和HTTPS协议?HTTP协议:全称HyperText Transfer Protocol,中文意为超文本传输协议,是一种用于在互联网上传输文本、图片、视频等超文本内容的传输协议。它是互联网上应用最为广泛的网络协议之一,用于发布和接收HTML页面。服务器端口号:80端口。HTTPS协议:全称HTTP Secure,是在HTTP协议的基础上加入SSL层,用于加密HTTP数据传输,保障数据传输的安全性。它通过SSL/TLS协议对数据进行加密,防止数据被窃取或篡改。
1、什么是host:port/path/?query-string=xxx#anchor- scheme:代表的是访问的协议,一般为weixin.qq.com/yunweijia,那么yunweijia就是path;
- query-string:查询字符串;
- anchor:锚点,前端使用的比较多,后端几乎不会使用。
在浏览器中请求一个url,浏览器会对这个url进行一个编码。除英文字母,数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。
例如:我们百度了一个“运维家的博客”,那么我们看到的浏览器地址如下:
当我们把这个地址复制出来之后,就变成了如下内容:
www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=62095104_26_oem_dg&wd=%E8%BF%90%E7%BB%B4%E5%AE%B6%E7%9A%84%E5%8D%9A%E5%AE%A2&oq=%25E8%25BF%2590%25E7%25BB%25B4%25E5%25AE%25B6%25E7%259A%2584%25E5%2585%25AC%25E4%25BC%2597%25E5%258F%25B7&rsv_pq=e3d7145400001091&rsv_t=6f9ea6jfVcHGs9LYvGE8tJ2J0mXLfwIfvoKmvZbQoqzwmB1o4iwwtk93tS7iuiukKSIlxRfaXLOZ&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_btype=t&inputT=934&rsv_sug3=36&rsv_sug1=24&rsv_sug7=100&rsv_sug2=0&rsv_sug4=1710可以看到中文确实变成了百分号+16进制的内容哈。
4、常用的请求方式
在http协议中,常用的有8种请求方式,如下:
序
方法
描述
1
GET
请求指定的页面信息,并返回实体主体
2
POST
向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中,POST请求可能会导致新的资源建立或已有资源修改
3
HEAD
类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头
4
OPTIONS
允许客户端查看服务器的内容
5
PUT
从客户端向服务器传送的数据取代指定的文档内容
6
DELETE
请求服务器删除指定页面
7
TRACE
回显服务器收到的请求,主要用于测试或诊断
8
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
但是我们一般使用的方式主要是GET和POST两种方式;
一般情况下都会遵循使用的原则。但是有的网站和服务器为了做反爬虫机制,也经常会不按常理出牌,有可能一个应该使用get方法的请求就一定要改成post请求,这个要视情况而定,并不是固定的。
5、请求头常见参数
(1)请求数据
在http请求中,发起一个请求的时候,数据大致分成了三部分:
- 数据放在url中;
- 数据放在body中(在post请求中);
- 数据放在head中;
(2)请求头常见参数
- User-Agent:浏览器名称。这个在网络爬虫中经常会被使用到。请求一个网页的时候,服务器通过这个参数就可以知道这个请求是由哪种浏览器发送的。如果我们是通过爬虫发送请求,那么我们的User-Agent就是Python,这对于那些有反爬虫机制的网站来说,可以轻易的判断你这个请求是爬虫。因此我们要经常设置这个值为一些浏览器的值,来伪装我们的爬虫。
- Referer:表明当前这个请求是从哪个url过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不做相关的响应。
- Cookie:http协议是无状态的。也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人。因此这时候就用cookie来做标识。一般如果想要做登录后才能访问的网站,那么就需要发送cookie信息了。且cookie有时效性,也就是过一段时间就过期了。
6、http常用响应状态码
这个是常态,但是不是固态,不排除有些网站不按常理出牌哈。
大致分为五类,如下图:
细分的话如下:
状态码
英文描述
状态描述
100
Continue
继续。客户端应继续其请求
101
Switching Protocols
切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200
OK
请求成功。一般用于GET与POST请求
201
Created
已创建。成功请求并创建了新的资源
202
Accepted
已接受。已经接受请求,但未处理完成
203
Non-Authoritative Information
非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204
No Content
无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205
Reset Content
重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206
Partial Content
部分内容。服务器成功处理了部分GET请求
300
Multiple Choices
多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301
Moved Permanently
永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302
Found
临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303
See Other
查看其它地址。与301类似。使用GET和POST请求查看
304
Not Modified
未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305
Use Proxy
使用代理。所请求的资源必须通过代理访问
306
Unused
已经被废弃的HTTP状态码
307
Temporary Redirect
临时重定向。与302类似。使用GET请求重定向
400
Bad Request
客户端请求的语法错误,服务器无法理解
401
Unauthorized
请求要求用户的身份认证
402
Payment Required
保留,将来使用
403
Forbidden
服务器理解请求客户端的请求,但是拒绝执行此请求
404
Not Found
服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405
Method Not Allowed
客户端请求中的方法被禁止
406
Not Acceptable
服务器无法根据客户端请求的内容特性完成请求
407
Proxy Authentication Required
请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408
Request Time-out
服务器等待客户端发送的请求时间过长,超时
414
Request-URI Too Large
请求的URI过长(URI通常为网址),服务器无法处理
500
Internal Server Error
服务器内部错误,无法完成请求
501
Not Implemented
服务器不支持请求的功能,无法完成请求
502
Bad Gateway
作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503
Service Unavailable
由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504
Gateway Time-out
充当网关或代理的服务器,未及时从远端服务器获取请求
505
HTTP Version not supported
服务器不支持请求的HTTP协议的版本,无法完成处理
至此,本文结束。
更多优质内容请转至VX公众号 “运维家” ,回复 “165” 查看。
------ “运维家” ,回复 “165” ------
------ “运维家” ,回复 “165” ------
------ “运维家” ,回复 “165” ------重庆安全运维工程师入行门槛低,运维监理工程师是做什么的,大连找工作运维工程师,系统运维工程师工作计划的编写,系统运维工程师学习课程,适合运维工程师的兼职,信息运维工程师绩效考核表,高级运维工程师薪资待遇,风电运维工程师连体工作服,运维工程师的sql面试题,it运维工程师问题,运维工程师应具备什么技能,运维工程师列常检测什么,国投电力初级运维工程师,运维工程师日常照片,华北电力运维工程师是做什么的,网络工程师辛苦吗电商运维工作,电气工程师运维月薪,运维工程师百度,运维工程师相关的书。
本文共计2806个文字,预计阅读时间需要12分钟。
1. 什么是HTTP和HTTPS协议?HTTP协议:全称HyperText Transfer Protocol,中文意为超文本传输协议,是一种用于在互联网上传输文本、图片、视频等超文本内容的传输协议。它是互联网上应用最为广泛的网络协议之一,用于发布和接收HTML页面。服务器端口号:80端口。HTTPS协议:全称HTTP Secure,是在HTTP协议的基础上加入SSL层,用于加密HTTP数据传输,保障数据传输的安全性。它通过SSL/TLS协议对数据进行加密,防止数据被窃取或篡改。
1、什么是host:port/path/?query-string=xxx#anchor- scheme:代表的是访问的协议,一般为weixin.qq.com/yunweijia,那么yunweijia就是path;
- query-string:查询字符串;
- anchor:锚点,前端使用的比较多,后端几乎不会使用。
在浏览器中请求一个url,浏览器会对这个url进行一个编码。除英文字母,数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。
例如:我们百度了一个“运维家的博客”,那么我们看到的浏览器地址如下:
当我们把这个地址复制出来之后,就变成了如下内容:
www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=62095104_26_oem_dg&wd=%E8%BF%90%E7%BB%B4%E5%AE%B6%E7%9A%84%E5%8D%9A%E5%AE%A2&oq=%25E8%25BF%2590%25E7%25BB%25B4%25E5%25AE%25B6%25E7%259A%2584%25E5%2585%25AC%25E4%25BC%2597%25E5%258F%25B7&rsv_pq=e3d7145400001091&rsv_t=6f9ea6jfVcHGs9LYvGE8tJ2J0mXLfwIfvoKmvZbQoqzwmB1o4iwwtk93tS7iuiukKSIlxRfaXLOZ&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_btype=t&inputT=934&rsv_sug3=36&rsv_sug1=24&rsv_sug7=100&rsv_sug2=0&rsv_sug4=1710可以看到中文确实变成了百分号+16进制的内容哈。
4、常用的请求方式
在http协议中,常用的有8种请求方式,如下:
序
方法
描述
1
GET
请求指定的页面信息,并返回实体主体
2
POST
向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中,POST请求可能会导致新的资源建立或已有资源修改
3
HEAD
类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头
4
OPTIONS
允许客户端查看服务器的内容
5
PUT
从客户端向服务器传送的数据取代指定的文档内容
6
DELETE
请求服务器删除指定页面
7
TRACE
回显服务器收到的请求,主要用于测试或诊断
8
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
但是我们一般使用的方式主要是GET和POST两种方式;
一般情况下都会遵循使用的原则。但是有的网站和服务器为了做反爬虫机制,也经常会不按常理出牌,有可能一个应该使用get方法的请求就一定要改成post请求,这个要视情况而定,并不是固定的。
5、请求头常见参数
(1)请求数据
在http请求中,发起一个请求的时候,数据大致分成了三部分:
- 数据放在url中;
- 数据放在body中(在post请求中);
- 数据放在head中;
(2)请求头常见参数
- User-Agent:浏览器名称。这个在网络爬虫中经常会被使用到。请求一个网页的时候,服务器通过这个参数就可以知道这个请求是由哪种浏览器发送的。如果我们是通过爬虫发送请求,那么我们的User-Agent就是Python,这对于那些有反爬虫机制的网站来说,可以轻易的判断你这个请求是爬虫。因此我们要经常设置这个值为一些浏览器的值,来伪装我们的爬虫。
- Referer:表明当前这个请求是从哪个url过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不做相关的响应。
- Cookie:http协议是无状态的。也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人。因此这时候就用cookie来做标识。一般如果想要做登录后才能访问的网站,那么就需要发送cookie信息了。且cookie有时效性,也就是过一段时间就过期了。
6、http常用响应状态码
这个是常态,但是不是固态,不排除有些网站不按常理出牌哈。
大致分为五类,如下图:
细分的话如下:
状态码
英文描述
状态描述
100
Continue
继续。客户端应继续其请求
101
Switching Protocols
切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200
OK
请求成功。一般用于GET与POST请求
201
Created
已创建。成功请求并创建了新的资源
202
Accepted
已接受。已经接受请求,但未处理完成
203
Non-Authoritative Information
非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204
No Content
无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205
Reset Content
重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206
Partial Content
部分内容。服务器成功处理了部分GET请求
300
Multiple Choices
多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301
Moved Permanently
永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302
Found
临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303
See Other
查看其它地址。与301类似。使用GET和POST请求查看
304
Not Modified
未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305
Use Proxy
使用代理。所请求的资源必须通过代理访问
306
Unused
已经被废弃的HTTP状态码
307
Temporary Redirect
临时重定向。与302类似。使用GET请求重定向
400
Bad Request
客户端请求的语法错误,服务器无法理解
401
Unauthorized
请求要求用户的身份认证
402
Payment Required
保留,将来使用
403
Forbidden
服务器理解请求客户端的请求,但是拒绝执行此请求
404
Not Found
服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405
Method Not Allowed
客户端请求中的方法被禁止
406
Not Acceptable
服务器无法根据客户端请求的内容特性完成请求
407
Proxy Authentication Required
请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408
Request Time-out
服务器等待客户端发送的请求时间过长,超时
414
Request-URI Too Large
请求的URI过长(URI通常为网址),服务器无法处理
500
Internal Server Error
服务器内部错误,无法完成请求
501
Not Implemented
服务器不支持请求的功能,无法完成请求
502
Bad Gateway
作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503
Service Unavailable
由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504
Gateway Time-out
充当网关或代理的服务器,未及时从远端服务器获取请求
505
HTTP Version not supported
服务器不支持请求的HTTP协议的版本,无法完成处理
至此,本文结束。
更多优质内容请转至VX公众号 “运维家” ,回复 “165” 查看。
------ “运维家” ,回复 “165” ------
------ “运维家” ,回复 “165” ------
------ “运维家” ,回复 “165” ------重庆安全运维工程师入行门槛低,运维监理工程师是做什么的,大连找工作运维工程师,系统运维工程师工作计划的编写,系统运维工程师学习课程,适合运维工程师的兼职,信息运维工程师绩效考核表,高级运维工程师薪资待遇,风电运维工程师连体工作服,运维工程师的sql面试题,it运维工程师问题,运维工程师应具备什么技能,运维工程师列常检测什么,国投电力初级运维工程师,运维工程师日常照片,华北电力运维工程师是做什么的,网络工程师辛苦吗电商运维工作,电气工程师运维月薪,运维工程师百度,运维工程师相关的书。

