HTTP和HTTPS是什么,有什么区别
- http
- 以明文的方式进行传输
- 默认端口号:80
- https
- http + ssl(安全套接字层)
- 以密文的方式进行传输
- 默认端口号:443
- http与https的区别
- ssl 可以对数据进行加密和解密,在服务器端将明文加密成为密文,数据以密文的方式在网络上进行传输,最后在客户端将密文解密为明文再进行处理
- 因为https比http多一个ssl,所以https比http更加安全,但也正因为这个原因,https比http性能更低
URL的格式
URL,统一资源定位符,是用来完整地描述interent上网页和其他资源的地址的标识方法。
基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]
- scheme: 协议(eg:http, https, ftp)
- host: 服务器的IP地址或域名
- port#: 服务器端口号(协议默认端口号80或443)
- path: 访问资源的路径
- query-string: 参数,发送给服务器的数据
- anchor: 锚, 跳转到网页的指定锚点位置
HTTP请求
客户端发送的HTTP请求由4部分组成。
- 请求行
请求行由请求方法+空格+URL+空格+协议版本号+回车符+换行符组成
根据HTTP标准,HTTP请求可以使用多种请求方法。- HTTP 0.9: 只有基本的文本GET功能。
- HTTP 1.0: 完善的请求/响应模型,并将协议补充完整,定义了三种请求方法:GET, POST和HEAD方法。
- HTTP 1.1:在1.0基础上进行更新,新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE和CONNECT方法
- 请求头部
请求头部由多个(头部字段名+:+值+回车符+换行符)+回车符+换行符组成
常见的请求报头:- Host(主机和端口号):对应网址URL中的Web名称和端口号,用于指定被请求资源的Interent主机和端口号
- Connection(链接类型):表示客户端与服务连接类型
- Client发送一个包含
Connection:keep-alive
的请求,HTTP/1.1使用keep-alive
为默认值 - Server收到请求后,如果支持
keep-alive
,回复一个Connection:keep-alive
的响应,不关闭连接;如果不支持Connection:keep-alive
,回复一个Connection:close
的响应,关闭连接。 - Client收到包含
Connection:keep-alive
的响应,向同一个连接发送下一个请求,直到一方主动关闭连接 - 长链接在很多情况下能够重用连接,减少资源消耗,缩短响应时间
- Client发送一个包含
- Upgrade-Insecure-Request(升级为HTTPS请求):升级不安全的请求,即在加载http资源时自动替换为https请求,让浏览器不再显示https页面中的http请求警告
- User-Agent(浏览器名称):客户浏览器的名称,也是爬虫的必须字段
- Accept(传输文件类型):值浏览器或其他客户端可以接受的MIME(多用途互联网邮件扩展)文件类型,服务器可以根据它判断并返回适当的文件格式
- Referer(页面跳转处):表示产生请求的网页是来自于哪个URL,用户是从该Referer页面访问到当前页面。这个属性可以用来跟踪Web请求来自哪个页面,是从什么网站发来的。在爬虫中有时需要对应的referer,否则无法请求,这是因为人家做了反爬虫机制,原理就是根据referer去判断是否是本网站的地址,如果不是,则拒绝,如果是,就可以下载。
- Accept-Encoding(文件编解码格式):指出浏览器可以接受的编码方式。。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式,许多情形下这可以减少大量的下载时间。
- Accept-Charset(字符编码):指出浏览器可以接受的字符编码
- Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,用来记载根服务器有关的用户信息,也可以用来实现回话。
- Content-Type (POST数据类型):POST请求里用来表示的内容类型
- 空行
- 请求数据
HTTP响应状态码(status code)
- 200: 成功
- 302: 重定向
- 307: 重定向
- 404: not found
- 500: 服务器内部错误