Python爬虫中HTTP和HTTPS的杂七杂八

    HTTP协议(HyperText Transfer Protocol,端口号80)即超文本传输协议,是一种发布和接收HTML页面的方法。HTTPS(HyperText Transfer Protocol over Secure Socket Layer,端口号443)是HTTP的安全版本,加入了SSL层。SSL(Secure Socket Layer)即安全套接层,主要用于web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。

    浏览器发送HTTP请求的过程:

  • 用户在浏览器的地址栏中输入一个URL之后,浏览器会向HTTP服务器发送HTTP请求,主要分为get和post两种方法;
  • 服务器把response对应的HTML文件对象发送回给浏览器;
  • 浏览器分析response中的HTML,针对其引用的其他文件如CSS、JS等,浏览器会自动发送request去获取图片;
  • 当所有的文件都下载成功之后,网页会根据HTML语法结构完整的显示出来。

    GET请求是从服务器上获取数据,POST请求是向服务器传送数据。其中get请求的参数都会显示在浏览器的网址上,即get请求参数是URL的一部分,故存在安全隐患。post请求参数在请求体之中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据,请求的参数包含在Content-Type消息头中。

常用的请求报头:

  • Host (主机和端口号)

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

  • 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文件和相关的图形文件),不需要每次都去请求建立连接。

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

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

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

  • User-Agent (浏览器名称)

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

  • 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:用于传输应用程序数据或者二进制数据。详细请点击

  • Referer (页面跳转处)

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

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

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

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

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

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

  • Accept-Language(语言种类)

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

  • 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 的一种变长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。

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

  •  Cookie (Cookie)

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

  •  Content-Type (POST数据类型)

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

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

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

HTTP相应码:

1xx:信息

2xx:成功

3xx:重定向

4xx:客户端错误

5xx:服务器错误

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值