千家信息网

HTTP与HTTPS简介

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,HTTP协议(HyperText Transfer Protocal):即超文本传输协议,是一种发布和接收HTML页面的方法.HTTPS协议(HyperText Transfer Protocal o
千家信息网最后更新 2024年12月12日HTTP与HTTPS简介


HTTP协议(HyperText Transfer Protocal):

即超文本传输协议,是一种发布和接收HTML页面的方法.

HTTPS协议(HyperText Transfer Protocal over Secure Socket Layer):

可理解为HTTP的安全版,即在HTTP协议的基础上添加了SSL层.


SSL(Secure Sockets Layer安全套接子层):

主要用于WEB的安全传输,可以在传输层对数据进行加密.由netscape公司提出.


协议端口号:

  • HTTP:80

  • HTTPS:443

爬虫的工作原理:

网络爬虫的抓取过程可以理解为模拟浏览器操作的过程

浏览器的主要功能是向服务器发出请求,并在窗口中显示服务器返回的资源.


HTTP的请求与响应:

HTTP通信有两部分组成:客户端请求消息服务器响应消息


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

  1. 当用户在地址栏中输入一个URL并且回车的时候,浏览器会向HTTP服务器发送HTTP请求,HTTP请求最长用的是GETPOST方法

  2. 浏览器发送Request请求去获取服务器端的HTML文件,服务器则返回一个Response对象.

  3. 浏览器会分析Response中的HTML,发现其中会引用其它文件,如p_w_picpaths css js等,此时浏览器会再次请求去获取这些资源.

  4. 当所有的文件全部下载成功后,浏览器会根据HTML的语法结构组成最终的页面.



客户端HTTP请求:

客户端发送一个HTTP请求到服务器的格式为:

请求行| 请求头部 |空行 |请求数据

下图为请求报文的一般格式:

一个典型的HTTP请求示例:

GET https://www.douban.com/ HTTP/1.1Host: www.douban.comConnection: keep-alivePragma: no-cacheCache-Control: no-cacheUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3253.3 Safari/537.36Upgrade-Insecure-Requests: 1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,p_w_picpath/webp,p_w_picpath/apng,*/*;q=0.8#Accept-Encoding: gzip, deflate, brAccept-Language: zh,en-US;q=0.9,en;q=0.8,zh-TW;q=0.7,zh-CN;q=0.6Cookie: bid=2MYBpxuz2yQ; __yadk_uid=bxInROHOuKKEb7tkiSiEZygLYuYP2kxO; gr_user_id=14916ea7-aee0-43ad-83ee-7a236df37d47; viewed="20451827_25861795"; _vwo_uuid_v2=C055442D3B3854F97DDE6AC4D757E5BC|34b0bccb8c4f1faab1336ba5e19cea3c; ll="108288"; _ga=GA1.2.310445079.1508424221; ps=y; push_noty_num=0; push_doumail_num=0; __utmv=30149280.14370; ap=1; __utmz=30149280.1509712941.8.4.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1509723845%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DMLpogEZkCppQDqzj-PhnXBPTzkvUx6DiIQSWuIdGr7pLuzgf-AdrA2UCWYNaYEjf%26wd%3D%26eqid%3Dfb0db111000170200000000359fc642a%22%5D; _pk_id.100001.8cb4=280d7bc2f732b51c.1508424213.8.1509723845.1509712941.; _pk_ses.100001.8cb4=*; __utma=30149280.310445079.1508424221.1509712941.1509723846.9; __utmc=30149280; __utmt=1; __utmb=30149280.1.10.1509723846

一般在抓出数据时,不对数据做压缩处理,即注释掉下面一行:

Accept-Encoding: gzip, deflate, sdch, br

请求方法:

HTTP请求有多种方法,但是最为常用的为GET POST两种方法:


    • GET是从服务器上获取数据,POST是向服务器上传送数据

    • GET请求的参数都显示在浏览器网址上,HTTP服务器根据请求所包含的参数来产生响应内容,即GET请求的参数会成为URL的一部分.

    • POST请求参数存于请求体中(一般在表单中),消息长度没有限制而且以隐式的方式进行传送,通常用来向服务器提交信息量比较大的数据,请求的参数包含在"Content-Type"消息头中,指明该消息的媒体类型和编码.

    • 一般不使用GET方式提交表单,因为可能显示的暴露敏感信息



常用的请求报头:

1.HOST(主机号及端口号):对应网址URL中的WEB名称和端口号,用于指定被请求资源的Internet主机号和端口号.

2. Connection(链接类型):表示客户端与服务器的连接类型

3. Upgrade-Insecure-Requests(升级为HTTPS请求):升级不安全的请求,意思会在加载HTTP资源时自动替换成HTTPS请求,让浏览器不再显示HTTPS页面中的报警

4.User-Agent(浏览器名称)

5.Accept(文件传输类型):指浏览器或其它客户端可以接受的MIME(多用途互联网邮件扩展)类型,服务器可以根据它判断并返回适当的文件格式.

Accept:*/*表示什么都可以接收

p_w_picpath/gif表示图片

6.Referer(页面跳转处):表明产生请求的网页来自于哪个URL,用户是从该Referer页面访问到当前请求的页面.这个属性可以用来跟踪WEB请求来自哪个页面,来源网站等.

有时会遇到下载某网站图片时,需要使用对应的referer ,否则无法下载图片,这是因为该网站做了防盗链,原理是根据referer判断是否是本网站的地址,如果是则可以下载,不是则拒绝.


7.Accept-Encoding(文件编解码格式):指浏览器可以接受的编码方式.编码方式不同于文件格式,它是为了对文件进行压缩以加快文件的传输速度.浏览器在接收到WEB响应之后先解码,然后再检查文件格式.


8.Accept-Language(语言种类):指出浏览器可以接受的语言种类,如en或en-us或zh-cn等.当服务器能够提供一种以上的语言版本时要用到.


9.Accept-Charset(字符编码):指浏览器可以接受的字符编码,如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受.


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


11.Content-Type(post数据类型):POST请求里用来表示的内容类型


服务器端HTTP响应:

HTTP响应也由四个部分组成,分别是:状态行 消息报头 空行 响应正文



常见的状态码:

  • 100-199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程

  • 200-299:表示服务器成功接收请求并已经完成整个处理过程

  • 300-399:为完成请求,客户需进一步细化请求.列如请求的资源已经移动到一个新地址(302表示所请求的页面已经临时转移至新的URL 307和304表示使用缓存)

  • 400-499:客户端请求有误(404:服务器找不到相关页面 403服务器拒绝访问,权限不够)

  • 500-599:服务器端出现错误,常用500(请求未完成 服务器未知情况)


Cookie和Session:

客户端和服务器之间的交互仅限于请求和响应,结束之后就会断开,下次交互会被认为是新的连接,为了让服务器记录此用户的状态,必须找一个地方来记录用户的信息

Cookie:通过在客户端记录的信息来确认身份

Session:通过在服务器端记录的信息来确认身份



0