热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python网络爬虫摘文爬虫开发基础1·1HTTP与HTTPS

HTTP(HyperTextTransferProtocol,超文本传输协议)是一个客户端和服务器请求和应答的标准(TCP&

HTTP(Hyper Text Transfer Protocol,超文本传输协议)是一个客户端服务器请求和应答的标准(TCP)。客户端是终端用户,服务器是网站。通过使用Web浏览器、网络爬虫或者其他工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求,这个客户端加用户代理(User Agent)。响应的服务器存储着资源,比如HTTP文件和图像,这个服务器为源服务器(Origin Sever),在用户代理和服务器中间可能存在多个中间层,比如代理、网关或者隧道(Tunnels)。

通常由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接,HTTP服务器则在那个端口监听客户端发来的请求,一旦受到请求,服务器(向客户端)发回一个状态行(比如“HHTP/1.1 200 OK”)和(响应的)消息,消息体可能是请求的文件、错误消息或者其他一些消息。

在浏览器的地址栏输入的网站地址叫做(URL)。在浏览器的地址框中输入一个URL或单机一个超级URL时,URL就确定了要浏览的地址,向服务器发送一次请求,浏览器通过HTTP(超文本传输协议)传送到服务器,服务器根据请求头做出相应的响应,将响应数据返回到客户端,客户端收到响应内容后,通过浏览器翻译成网页。

HTTP协议传输的数据都是未加密的,也就是明文的数据,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能够加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS

HTTPS(Hyper Text Transfer Protocol Secure Sockets Layer,,可以理解为HTTP+SSL/TLS)在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息

HTTP与HTTPS的区别:

????

在这里插入图片描述

HTTPS的SSL中使用了非对称加密、对称加密以及HASH算法。握手过程的简单描述如下:

  1. 浏览器将自己支持的一套加密规则发送给网站

  2. 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含网站地址加密公钥以及证书的颁发机构等信息

  3. 获得网站证书之后浏览器要做一下工作:
    a. 验证证书的合法性(如颁发证书的机构是否合法、证书中包含的网站地址是否与正在访问地址一致等),如果证书受信任,浏览器栏就会显示一个小锁头,否则会给证书不受信任的提示。
    b. 如果证书受信任或者用户接受了不受信任的证书,浏览器就会生成一串随机数的密码,并用证书中提供的公钥加密。
    c. 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

  4. 网站接受浏览器发来的数据之后要做一下操作:
    a. 使用自己的私钥将信息解密并取出密码,使用密码解密浏览器发送来的握手信息,并验证HASH是否与浏览器发送来的一致。
    b. 使用密码加密一段握手消息,发送给浏览器。

  5. 如果浏览器解密并计算握手消息的HASH与服务端发送来的HASH一致,此时握手过程结束,之后所有的通信数据将使用之前的浏览器生成的随机密码,并利用对称加密算法进行加密。

·
浏览器与网站互相发送加密的握手消息并验证,目的是保证双方都获得一致的密码,并且可以正常的加密、解密数据,为真正数据的传输做一次测试。另外HTTPS一般使用的加密与HASH算法如下:

  1. 非对称加密算法:RSA、DSA/DSS
  2. 对称加密算法:AES、RC4、3DES
  3. HASH算法:MD5、SHA1、SHA256

其中,非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASN算法用于验证数据的完整性

由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,可以随意传输、而网站的私钥用于对数据进行解密,所以网站都会非常小心地保管自己的私钥,防止泄露。

SSL握手过程中有任何错误都会使加密连接断开,从而阻止隐私信息的传输,正是由于HTTPS非常安全,攻击者无法从中找到下手的地方,因此更多地采用假证书的手法来欺骗客户端,从而获得明文的信息。
·
·

·
·
·
文章摘选自《实战Python网络爬虫》,仅用于个人学习笔记。


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
author-avatar
大兵_小将
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有