fidder抓包原理及content-type类型
fidder抓包原理简介:
- 客户端像WEB服务器发送HTTP(S)请求时,请求会先经过Fiddler代理服务器。
- Fiddler代理服务器截取客户端的请求报文,再转发到WEB服务器,转发之前可以做一些请求报文参数修改 的操作
- WEB服务器处理完请求以后返回响应报文,Fiddler代理服务器会截取WEB服务器的响应报文。
- Fiddler处理完响应报文后再返回给客户端。
fidder抓包https原理:
现在基本上都使用HTTS传输,传输的数据都是经过加密的,这增加了我们分析数据包的难度,由于H TTPS传输需要使用到CA证书,所以抓取HTTPS数据包时需要做一些特殊配置。Fiddler截取HTTPS 报文的流程大致如下:
- 客户端请求建立HTTPS链接,发送客户端支持的加密协议及版本列表等信息给服务器端。
- Fiddler接受客户端请求并伪装成客户端向WEB服务器发送相同的请求。
- WEB服务器收到Fiddler的请求以后,从请求中筛选合适的加密协议。并返回服务器CA证书,证书中包括公钥信息。
- Fiddler收到WEB服务器的响应后保存服务器证书并自签名一个CA证书,伪装成服务器,把该证书下发给客户端。
- 客户端验证证书合法性。(Fiddler能否抓取到HTTPS报文关键看这一步)
- 客户端生产对称**,通过证书的公钥加密发送给服务器。
- Fiddler拦截客户端的请求以后,使用私钥解密该报文,获取对称加密秘钥,并使用服务器证书中带的公钥加密该对称**发送给WEB服务器。此时对称**已经泄露了,以后可以使用该秘钥界面客户端和服务器端传输的数据。
- WEB服务器接收到客户端发送的加密的对称**后使用私钥解密,并使用对称**加密测试数据传给客户端。
- Fiddler使用前面获取的对称**解密报文。
- 客户端验证数据无误以后HTTPS连接就建立完成,客户端开始向服务器发送使用对称**加密的业务数据
- Fiddler使用前面获取的对称**解密客户端发送的数据并重新加密转发给服务器端。
Fidder在此时就相当于一个双面间谍一样,对服务器来说它是客户端,对客户端来说它是服务器端,能够同时获得客户端和服务端加密的内容
常见的content-type:
- application/x-www-form-urlencoded:这应该是最常见的提交数据的方式了。数据被编码为名称/值对,这是标准的编码格式。
-
multipart/form-data:一般用在发送文件的POST包,另外,还有boundary用于分割数据。当文件太长,HTTP无法在一个包之内发送完毕 ,就需要分割数据,分割成一个一个chunk发送给服务端, 那么boundary用于区分数据块, 而后面的数据就是标示区分包作用
- text/xml:通过XML 形式将数据发送给服务器
- application/json:通过json形式将数据发送给服务器,现在越来越多的应用使用application/json,由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON. stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。