爬虫是 模仿用户在浏览器或者某个利用上的操作,把操作的过程、实现自动化的程序
当咱们在浏览器中输出一个url后回车,后盾会产生什么?比如说你输出http://www.sina.com.cn/
简略来说这段过程产生了以下四个步骤:
- 查找域名对应的IP地址。
- 向IP对应的服务器发送申请。
- 服务器响应申请,发回网页内容。
- 浏览器解析网页内容。
网络爬虫实质
实质就是浏览器http申请
浏览器和网络爬虫是两种不同的网络客户端,都以雷同的形式来获取网页:
网络爬虫要做的,简略来说,就是实现浏览器的性能。通过指定url,间接返回给用户所须要的数据,而不须要一步步人工去操纵浏览器获取。
浏览器是如何发送和接管这个数据呢?
HTTP简介
HTTP协定(HyperText Transfer Protocol,超文本传输协定)目标是为了提供一种公布和接管HTML(HyperText Markup Language)页面的办法。
HTTP协定所在的协定层(理解)
HTTP是基于TCP协定之上的。在TCP/IP协定参考模型的各层对应的协定如下图,其中HTTP是应用层的协定。默认HTTP的端口号为80,HTTPS的端口号为443。
HTTP工作过程
一次HTTP操作称为一个事务,其工作整个过程如下:
1 ) 、地址解析,
如用客户端浏览器申请这个页面:http://localhost.com:8080/index.htm
从中合成出协定名、主机名、端口、对象门路等局部,对于咱们的这个地址,解析失去的后果如下:协定名:http 主机名:localhost.com 端口:8080 对象门路:/index.htm
在这一步,须要域名零碎DNS解析域名localhost.com,得主机的IP地址。
2)、封装HTTP申请数据包
把以上局部联合本机本人的信息,封装成一个HTTP申请数据包
3)封装成TCP包,建设TCP连贯(TCP的三次握手)
在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建设连贯,该连贯是通过TCP来实现的,该协定与IP协定独特构建Internet,即驰名的TCP/IP协定族,因而Internet又被称作是TCP/IP网络。
HTTP是比TCP更高层次的应用层协定,依据规定,只有低层协定建设之后能力,能力进行更层协定的连贯,因而,首先要建设TCP连贯,个别TCP连贯的端口号是80。这里是8080端口
4)客户机发送申请命令
建设连贯后,客户机发送一个申请给服务器,申请形式的格局为:对立资源标识符(URL)、协定版本号,后边是MIME信息包含申请修饰符、客户机信息和可内容。
5)服务器响应
服务器接到申请后,给予相应的响应信息,其格局为一个状态行,包含信息的协定版本号、一个胜利或谬误的代码,后边是MIME信息包含服务器信息、实体信息和可能的内容。
实体音讯是服务器向浏览器发送头信息后,它会发送一个空白行来示意头信息的发送到此为完结,接着,它就以Content-Type应答头信息所形容的格局发送用户所申请的理论数据
6)服务器敞开TCP连贯
个别状况下,一旦Web服务器向浏览器发送了申请数据,它就要敞开TCP连贯,而后如果浏览器或者服务器在其头信息退出了这行代码
Connection:keep-alive
TCP连贯在发送后将依然放弃关上状态,于是,浏览器能够持续通过雷同的连贯发送申请。放弃连贯节俭了为每个申请建设新连贯所需的工夫,还节约了网络带宽。
HTTPS
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以平安为指标的HTTP通道,简略讲是HTTP的平安版。即HTTP下退出SSL层,HTTPS的平安根底是SSL。其所用的端口号是443。
SSL:安全套接层,是netscape公司设计的次要用于web的平安传输协定。这种协定在WEB上取得了宽泛的利用。通过证书认证来确保客户端和网站服务器之间的通信数据是加密平安的。
有两种根本的加解密算法类型:
1)对称加密(symmetrcic encryption):密钥只有一个,加密解密为同一个明码,且加解密速度快,典型的对称加密算法有DES、AES,RC5,3DES等;
对称加密次要问题是共享秘钥,除你的计算机(客户端)晓得另外一台计算机(服务器)的私钥秘钥,否则无奈对通信流进行加密解密。解决这个问题的计划非对称秘钥。
2)非对称加密:应用两个秘钥:公共秘钥和公有秘钥。公有秘钥由一方明码保留(个别是服务器保留),另一方任何人都能够取得公共秘钥。
这种密钥成对呈现(且依据公钥无奈推知私钥,依据私钥也无奈推知公钥),加密解密应用不同密钥(公钥加密须要私钥解密,私钥加密须要公钥解密),绝对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
https通信的长处:
- 客户端产生的密钥只有客户端和服务器端能失去;
- 加密的数据只有客户端和服务器端能力失去明文;
- 客户端到服务端的通信是平安的。
IT入门 感激关注 | 练习地址:www.520mg.com/it