Filddler抓包

学习Fiddler的前置知识

B/S架构

  • B/S架构即浏览器和服务器架构模式

编写程序部署到Web服务器html

web服务器运行在服务器上,绑定ip地址并监听某端口,接受和处理http请求git

客户端经过http协议h获取服务器上的网页、文档等资源github

HTTP协议

  • Hyper Text Transfer Protocol (超文本传输协议)web

  • 用于从万维网服务器传输超文本到本地浏览器的传送协议windows

  • http协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务后端

    端的数据传输协议,最初是用来客户端传输HTML页面的内容,默认端口是80浏览器

  • http是基于请求与响应模式的,无状态的、应用层的协议缓存

HTTP协议的主要特色

1.支持客户/服务器模式服务器

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。 请求方法经常使用的有GET、HEAD、POST。 每种方法规定了客户与服务器联系的类型不一样。因为HTTP协议简单, 使得HTTP服务器的程序规模小,于是通讯速度很快。网络

3.灵活:HTTP容许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无链接: 无链接的含义是限制每次链接只处理一个请求。 服务器处理完客户的请求, 并收到客户的应答后, 即断开链接。 采用这种方式能够节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。另外一方面,在服务器不须要先前信息时它的应答就较快。

完整的HTTP协议

  • 完整的HTTP协议包含请求和响应两块内容

HTTP报文

一、报文: HTTP在 应用层 交互数据的方式 (网络中交换和传输的数据单元)

二、HTTP的报文分为:请求报文 & 响应报文

HTTP请求报文

  • HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。

img

请求头

​ Accept:用于告诉浏览器,客户机支持的数据类型

​ Accept-Charset:用于告诉服务器,客户机采用的编码

​ Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式

​ Accept-Language:客户机的语言环境

​ Host:客户机经过这个头告诉服务器,想访问的主机名

​ If-Modified-Since:客户机经过这个头告诉服务器,资源的缓存时间

​ Refer:客户机经过这个头告诉服务器,他是从哪一个资源来访问服务器的(用于防盗链)

​ User-Agent:客户机经过这个头告诉服务器,客户机的软件环境

​ Authorization: 客户端提供给服务端,进行权限认证的信息

​ Cookie:客户机经过这个头能够向服务器带数据​

HTTP响应报文

  • HTTP响应报文由四部分组成:状态行、响应头 、空行、响应体

img

响应头

Location:这个头配合302状态码使用,用于告诉客户机找谁

​ Server:服务器经过这个头,告诉浏览服务器的类型

​ Content-Encoding:服务器经过这个头,数据的压缩格式

​ Content-Length:服务器经过这个头,告诉浏览器回送数据的长度

​ Content-Type:服务器经过这个头,告诉浏览器回送数据的类型

​ Last-Modified:服务器经过这个头,告诉浏览器当前资源缓存时间

​ Refresh:服务器经过这个头,告诉浏览器隔多长时间刷新一次

​ Content-Disposition:服务器经过这个头,告诉浏览器如下载方式打开数据

​ Transfer-Enconding:服务器经过这个头,告诉浏览器数据的传送格式

​ ETag:缓存相关的头

​ Expires:服务器经过这个头,告诉浏览器回送的资源缓存多长时间,-1或0,则是不缓存

​ Cache-Control:no-cache、 Pragma:no-cache :服务器经过这两个响应头,也是控制浏览器不要缓存数据

完整的http请求处理过程

(1) 创建或处理链接:接收请求或拒绝请求(三次握手的过程)

(2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程;

(3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息;

(4) 访问资源:获取请求报文中请求的资源;

(5) 构建响应报文:响应客户端请求;

(6) 发送响应报文

(7) 记录日志

请求方法

1) GET

传递参数长度受限制,由于传递的参数是直接表示在地址栏中,而特定浏览器和服务器对url的长度是有限制的。

所以,GET不适合用来传递私密数据,也不适合拿来传递大量数据。

通常的HTTP请求大多都是GET。

2)POST

POST把传递的数据封装在HTTP请求数据中,以名称/值的形式出现,能够传输大量数据,对数据量没有限制,也不会显示在URL中。

表单的提交用的是POST。

3)HEAD

HEAD跟GET类似,不过服务端接收到HEAD请求时只返回响应头,不发送响应内容。因此,若是只须要查看某个页面的状态时,用HEAD更高效,由于省去了传输页面内容的时间。

4)DELETE

删除某一个资源。

5)OPTIONS

用于获取当前URL所支持的方法。若请求成功,会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

6)PUT

把一个资源存放在指定的位置上。

本质上来说, PUT和POST极为类似,都是向服务器发送数据,但它们之间有一个重要区别,PUT一般指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器本身决定。

7)TRACE

回显服务器收到的请求,主要用于测试或诊断。

8)CONNECT

CONNECT方法是HTTP/1.1协议预留的,可以将链接改成管道方式的代理服务器。一般用于SSL加密服务器的连接与非加密的HTTP代理服务器的通讯。

状态码

  • 状态码:由3位数字组成,第一个数字定义了响应的类别
  1. 1xx:指示信息,表示请求已接收,继续处理

  2. 2xx:成功,表示请求已被成功接受,处理。

    • 200 OK:客户端请求成功
    • 204 No Content:无内容。服务器成功处理,但未返回内容。通常用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的状况。不会刷新页面。
    • 206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容
  3. 3xx:重定向 - 要完成请求必须进行更进一步的操做

    • 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其余位置。
    • 302 Found:临时重定向,表示请求的资源临时搬到了其余位置
    • 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302同样,区别只是303明确客户端应该使用GET访问
    • 307 Temporary Redirect:临时重定向,和302有着相同含义。POST不会变成GET
    • 304 Not Modified:304告诉缓存器资源没有被修改,而且响应体是空的,不会浪费带宽。
  4. 4xx:客户端错误 -请求有语法错误或请求没法实现

    • 400 Bad Request:客户端请求有语法错误,服务器没法理解。
    • 401 Unauthorized:请求未经受权,这个状态代码必须和WWW-Authenticate报头域一块儿使用。
    • 403 Forbidden:服务器收到请求,可是拒绝提供服务
    • 404 Not Found:请求资源不存在。好比,输入了错误的url
    • 415 Unsupported media type:不支持的媒体类型
  5. 5xx:服务器端错误,服务器未能实现合法的请求。

    • 500 Internal Server Error:服务器发生不可预期的错误。
    • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,

Fiddler简介

  • Fillder是位于客户端和服务器端的HTTP代理

  • 目前最经常使用的HTTP抓包工具之一

  • 功能很是强大,是Web调试的利器

    • 修改请求的数据,甚至能够修改服务器返回的数据

    • 监控浏览器全部的HTTP/HTTPS流量

    • 查看、分析请求内容细节

    • 伪造客户端请求和服务器响应

    • 测试网站的性能

    • 解密HTTPS的web会话

    • 全局、局部断点功能

    • 第三方插件

  • 是windows下首选的抓包工具

  • 使用场景

    • 接口调试、接口测试、线上环境调试、web性能分析
    • 判断先后端bug、开发环境hosts配置、mock、弱网断电测试

Fiddler工做原理

​ 在本机开启了一个http的代理服务器,而后它会转发全部的http请求和响应

​ Fiddler 是以代理web 服务器的形式工做的,它使用代理地址:127.0.0.1,端口:8888。

  • Fildder充当的是中间代理服务器
    • 能够监控客户端和服务器之间通讯的全过程
    • 它可以记录客户端和服务器之间的全部 HTTP请求
  • Fildder一打开,就会修改系统代理,也就是使用代理服务器

Fiddler增长IP列

一、 运行fiddler,菜单,Rules->Customize Rules…或者点击右侧tab “FiddlerScript”

二、Ctrl+F查找“static function Main()”字符串,而后添加下面这行代码:

三、FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");

4.保存CustomRules.js或者点击“Save Script”按钮

SwitchyOmega插件

  • 当Fiddler 的设置完了,这时候还须要在你的浏览器上设置代理服务器才能进行抓取。

  • 使用 Chrome 浏览器的能够直接使用 SwitchyOmega 插件进行修改便可,操做简单

  • <github.com/FelisCatus/… github下载

  • SwitchyOmega是一款在Google Chrome 浏览器上的一个代理扩展程序,能够轻松快捷地管理和切换多个代理设置。

抓取HTTPS包

Fiddler设置

一、打开Fiddler,经过Tools->Fiddler Options进入设置界面:

二、选择HTTPS,勾选Decrypt HTTPS traffic 解密HTTPS流量

  • from all processes:抓取全部进程的流量

  • from browsers only:只抓取浏览器的流量

  • from non-browsers only:不抓取浏览器的流量

  • from remote clients only:抓取远程的客户端,当须要抓取的是手机端的流量,就须要用到这个

三、安装证书

  • 当咱们不知道有没有安装证书的话,咱们能够选择Reset All Certificates (重置全部证书),而后一直选yes

  • 以后就会提示安装一个证书,这个证书就是用来作中间人进行抓包的, Fiddler使用此证书来解密所捕捉到的包,再加密转发到相对应的服务器端或者客户端

四、重启浏览器和Filddler

相关文章
相关标签/搜索