全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

了解HTTP协议

发布时间:2022-08-31 15:53:00
发布人:qyf

  我们学习知识就像盖房子一样,没有良好的地基,房子经不起风吹雨打。而如果房子的地基搭建的足够牢固,即使台风来了都是高高的耸立在那里。我们没有上来就讲爬虫怎么用,而是讲了一些基础的内容。这些内容大家都掌握了,后面我们学习实操爬虫就会很顺利,很清晰了。

  HTTP协议

  提到爬虫我们不得不提起HTT协议,那什么是HTTP协议呢?

  HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

  • 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件

  • 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容

  • 默认端口号:80

  并且HTTP是一种无状态(stateless) 协议, HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。

  有时我们还会使用到https协议,其实他是HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443

  • SSL对传输的内容(超文本,也就是请求体或响应体)进行加密

  请求

  HTTP协议中每次请求都会携带下方的内容,比如有请求的方法、请求的路径、协议的版本等我们称作请求行

  还有符合字段名:值的这个方式的,我们称作请求头。

  最后一部分是请求体。

Picture(6)

  大家来看一下,浏览器的开发者工具Network中的请求情况:

Picture(1)

  我们可以发现浏览器在发出请求的时候也是携带了请求行、请求头等内容。

  爬虫中特别关注的请求头

  无论是浏览器还是爬虫,在发出请求的时候要遵守HTTP协议,遵守HTTP协议就要携带请求头。

  浏览器的请求头有哪些呢?同样在Network模式点击一个链接查看:

Picture(2)

  这么多请求头发出请求的时候都要加吗?不是的,因为每个网站的请求头也是不一样的,也不是统一的。所以爬虫特别关注以下几个请求头字段:

  • Content-Type

  • Host (主机和端口号)

  • Connection (链接类型)

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

  • User-Agent (浏览器名称)

  • Referer (页面跳转处)

  • Cookie (Cookie)

  • Authorization(用于表示HTTP协议中需要认证资源的认证信息,如前边web课程中用于jwt认证)

  加粗的请求头为常用请求头,在服务器被用来进行爬虫识别的频率最高,相较于其余的请求头更为重要,但是这里需要注意的是并不意味这其余的不重要,因为有的网站的运维或者开发人员可能剑走偏锋,会使用一些比较不常见的请求头来进行爬虫的甄别

  响应

  有请求再加上响应才是一个完整的HTTP协议过程。那返回的响应内容格式又是什么呢?

Picture(3)

  所以每一次响应都会包含上图中的内容,状态码、协议版本、响应头、响应实体等。

  同样为了我们更加直观的来看响应我们还是通过浏览器的Network来看。可以看到有状态码、远程主机IP、响应头等内容

Picture(4)

  还有一个主要内容是没有看到的,那就是响应体,需要点击一下Response,就会发现下面发生了变化,你所看到的就是响应体的内容。

Picture(5)

  所以浏览器在发出请求的时候,运行过程是:

Picture

  http请求的过程

  我们无论访问任何网站都是在浏览器的地址栏上输入域名的,比如:http://www.baidu.com. 因为域名好记啊!我们从来不会记的百度的IP地址。但是识别的过程有DNS域名解析服务器完成了,它能够根据你输入的域名找到匹配的IP地址,然后将IP地址告诉你。

  浏览器在拿到域名对应的ip后,开始发起请求,并获取响应

  在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应

  浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应

  从获取第一个响应并在浏览器中展示,直到最终获取全部响应,——这个过程叫做浏览器的渲染

  那讲了这么多,到底HTTP跟我们即将要讲的爬虫有什么关系呢?请看下图:

Picture(7)

  http作用

  这个是爬虫的步骤,而HTTP协议则是这个步骤中的一部分而且是最重要的一部分,即发送请求获取响应的那部分。

  【说的明白些,就是【请求和响应】这段其实就是浏览器要干的活,我们通过写程序假装是浏览器在访问。】!!!上图红色框起来的那部分就是假装浏览器在做事情

  下一次爬虫我们给大家介绍正则表达式,并且介绍正则表达式在爬虫中的使用。

  更多关于“Python培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

相关文章

IT驻场与软件外包有什么区别?

IT驻场与软件外包有什么区别?

2023-10-14
ITSS各级别之间有什么联系?

ITSS各级别之间有什么联系?

2023-10-14
什么是软件定义存储(SDS)?

什么是软件定义存储(SDS)?

2023-10-14
DeepMind和OpenAI身后的两大RL流派有什么具体的区别?

DeepMind和OpenAI身后的两大RL流派有什么具体的区别?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取