HTTP协议详解

fiddle想抓取HTTPS的包,需要配置
    Tools-Options-HTTPS-可以都勾上-点击OK-重启fiddle
    
什么是抓包?
    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等
    也就是,对互相传输中的数据进行抓取
    
怎么抓到自己想要的包
    只抓取当前操作的包
    
为什么fiddle可以抓到移动端的包
    原理:客户端<————>fiddler代理<————>服务端(就好比你让人帮你在香港代购,你告诉代购你要买的东西,代购去香港给你买,那么在买的过程中,代购可以调包,可以制作虚拟数据)
    
    1.手机能连上电脑(其实就是手机与电脑需要处于同一局域网)
        手机与电脑连接到同一个WiFi\网线

URL:统一资源定位符。这意味着我们可以通过URL的方法去访问资源(接口)
URI:统一资源标识符。是一种抽象概念,本身没有具体去实现。URL是URI的子集,是URI的具体实现

URL是实现接口访问的第一步,一般来说,一个URL是分为5个部分:协议(protocol)、域名(domain)、端口(port)、path(路径)、URL parameters(参数)
    协议(protocol):指的是://之前的部分,是指通信双方对于通信过程中的数据、数据组织格式、规程、含义等所作的规定
        一般来说,按照TCP/IP模型,不同的层次有不同的协议;接口测试一般是从应用层的协议着手去模拟实现接口请求和访问的
        常见的应用层协议:
            HTTP
            HTTPS——>HTTP+ssl
            ssh   应用:xshell、finalshell
            ftp 文件传输协议
            SMTP
            pop3
            MySQL、oracle、MS SQL 也是应用层的
    
    域名(domain):是指要访问的服务器的地址。可以是服务器的域名,IP地址,机器名

    端口(port):是由服务器提供,用来监听客户端的请求。格式:domain:port
        如果服务器所设置的监听端口和其应用所采用的通信协议是默认的对应关系,则用户在通过URL来访问时,可以省略端口
        常用的协议及其默认的通信端口对应关系:
            HTTP    80
            HTTPS     443 or 8443
            ftp     21
            ssh     22
            smtp     25
            pop3    110
            oracle     1521
            MySQL     3306
            MS SQL    1433    
            
    path(路径):是要访问的资源在服务器的容器路径下的相对地址
        路径是和要访问的接口直接相关
        
    URL parameters(参数):URL地址参数,通常以问好?作为连接符拼接在path之后
        在很多工具中,URL地址参数是直接划分在path中的。
        URL地址参数是键值对应的,即key=value的格式,多个键值之间使用&作为连接
        
        
掌握HTTP协议
    HTTP    超文本传输协议
    特点:
        HTTP协议是一种基于request(请求)和response(响应)的协议;简单,灵活
        快速,HTTP协议1.0及0.9版本,默认是一种面向短连接的协议;HTTP协议1.1版本开始,默认是一种面向长连接的协议。
            短连接:一个tcp连接上只能建立一个HTTP连接,http结束之后,tcp也释放结束
            长连接:一个tcp连接上可以建立多个HTTP连接。这个是通过信息头:Connection来实现的。keep—alive就表示长连接。
            
PS:抓包工具很多,从接口测试角度来说,查看住区的数据包时,建议通过raw或者source的视图模式去查看数据。
    
    HTTP协议的详细构成:
        HTTP协议包含两个部分:http request、http response。
            http request:http请求,影响的是脚本的实现
                组成部分:request line、request headers、request body
                    request line:请求行,是指请求数据包中的第一行内容,
                                  示例 GET /phpwind/HTTP/1.1    包含以下信息:request method、request path、 protocol/version
                                  request method:请求方法,所有HTTP请求都必须使用请求方法,如果没有指定,则默认使用get方法
                                  常见请求方法有:get、post、put、patch、delete、option、header、trace等
get与post的区别?        
                        request path:请求路径,就是指URL中的path和url地址参数两个部分。
                        protocol/version:协议/版本
            
                    request headers:请求头,是指请求数据包中的第二行到第一个空行之前的部分。
                                     请求头是客户端和服务端进行通信信息、控制信息等交互的,一般来说和业务逻辑无关(出来状态类的信息头)
                                     信息头是键值对应的,类型是有协议规定的,不同的信息头具有不同的作用
                                     对于接口测试而言,一般来书需要重点关注的信息头为:
                            User-Agent:简称UA,是客户端用来告知服务器,客户端的一些配置信息(手机型号,浏览器内核)。服务器往往就是通过该信息头来判断”用户“是否是同一个用户。
                                        一般作为全局信息头使用
                            Content-Type:该信息头是客户端用来告知服务端,客户端向服务端所发送的请求body中的数据的数据组织格式。
                                          PS:Content-Type的值要求和实际发送的数据格式保持一致                            
                            状态有关的信息头:token,author等
            
                    request body:请求主体,是指从请求数据包中的第一个空行之后的所有内容。
                                  一般来说,get方法发送的数据位于url地址参数,反之放在url地址参数中数据,服务器人数为是通过get方法发送的。
                                  post方法发送的数据一般是位于请求主体中。请求主体中数据组织格式是由接口本身决定的。一旦请求主体有数据,则信息头中一定要指定Content-Type。
                            
                
            http response:http响应,影响的是脚本的增强。
                构成部分:response line、response header、response body
                    response line:响应行,是指响应数据包中的第一行内容
                                   示例:HTTP/1.1 200 OK
                                   包含信息:protocol/version、response code、response message
                                   response code:响应代码,又叫状态码。是服务器用来告知客户端,服务器对于请求的处理状态。
                                                   响应代码给出的只是通信层面的处理状态(如钉钉上面的未读,已读,已回复)
                                                   业务的成功是建立在通信成功的基础之上
                                                   
                                                   状态码分类:
                                                   1XX    表示建立连接过程中的双方的通信控制信息。
                                                   2XX    表示服务器处理成功,通信成功
                                                   3XX    表示重定向。假如你去请教A老师数学问题,但A老师告诉你,他不是数学老师,B老师才是数学老师,你去找他吧,这就是重定向。表示通信成功
                                                   4XX    表示客户端错误
                                                   5XX    表示服务器错误
                                                   PS:对于接口测试而言,一旦出现4XX,5XX都表示脚本不成功,而且绝大多数情况下,都是脚本本身数据组装有误导致
                                                   
                    
                    response header:响应头,是服务器返回给客户端的,可能有服务器返回的一些状态相关的信息头需要处理
                    
                    
                    response body:响应主体,是指响应数据包中的第一个空行之后的所有内容。
                                   响应主体救赎服务器对于请求的处理结果。要去判断请求是否成功,要去进行数据关联,很多时候都是和响应主体有关
            
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

你可能感兴趣的