MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

【基础】Fiddler基本信息

2025-01-07 13:07 huorong 精选文章 3 ℃ 0 评论


一、常Fiddler网站:

Fiddler官网:

https://www.telerik.com/fiddler

Fiddler Forum:

https://www.telerik.com/forums/fiddler?searchText=winconfig

Fiddler 插件下载:

https://www.telerik.com/fiddler/add-ons

二、常见的主流抓包工具对比:

Firebug:是 Mozilla Firefox 网页浏览器扩展,也是一个网页开发工具。

httpWatch:是强大的网页数据分析工具,集成在Internet Explorer工具栏。包括网页摘要Cookies管理,缓存管理,消息头发送/接受,字符查询,POST 数据和目录管理功能,报告输出,HttpWatch 是一款能够收集并显示深层信息的软件。

charles:界面相较与fiddler要简洁,主要用于Mac平台。

Wireshark:网络包分析工具,也是通用抓包工具,抓取信息量庞大且详细;是需要过滤信息才能得到有用信息,基本所有的通信抓包都可以抓取。

Fiddler :使用比较简单,很好用的Web调试工具之一,记录所有客户端和服务器的http和https请求,允许监视,设置断点,甚至修改输入输出数据等。

三、Fiddler简介

1、背景

Fiddler是C#语言开发;http协议调试代理工具,能够记录电脑与互联网之间http通讯,同时可设置断点,查看所有通讯的Fiddler数据(指cookie,html,js,css等文件)。

2、Fiddler原理

Fiddler是以代理web服务器的形式工作的,在客户端和服务器之间建立一个代理服务器,监听客户端发出的请求和服务器返回的响应结果,默认端口8888。

客户端将请求数据发送出去后,会先经过代理服务,代理服务可以对请求处理再发送给服务器;

服务器的响应数据返回给客户端,也会先通过代理服务,也可做相应的修改,返回给客户端。

工作于七层中的应用层,也可以捕获通过的HTTP(S)请求。

3、抓取HTTPS的解析过程

解析过程如下:

客户端请求建立HTTPS连接,发送客户端支持的加密协议和版本列表等信息给服务器;

Fiddler接受客户端的请求并伪装成客户端发送相同的请求给Web服务器;

Web服务器收到Fiddler的请求后,从请求中筛选出合适的加密协议并返回服务器CA证书,证书中包含公钥信息;

Fiddler收到服务器响应之后,保存服务器证书并自签名一个证书,伪装成服务器将该证书下发给客户端;

客户端验证证书的合法性(Fiddler能否抓取到HTTPS报文关键就看这一步了);

客户端生产对称密钥并使用自签名证书的公钥进行加密,发送给服务器;

Fiddler拦截客户端的请求之后,使用私钥解密该报文,获取对称密钥并使用CA证书的公钥加密,再发送给Web服务器;

Web服务器接收到客户端加密后的对称密钥,采用私钥解密,并使用对称密钥解密测试数据传给客户端;

Fiddler使用前面获取的对称密钥解密报文;

客户端验证数据无误后,HTTPS连接建立完成,此时客户端开始向服务器发送使用对称密钥加密的业务数据;

Fiddler使用前面获取的对称密钥解密客户端发送的数据并重新加密转发给客户端。


四、安装

1、windows安装:

官网下载后,直接打开安装即可。

2、Mac 安装:

相关链接:https://cloud.tencent.com/developer/article/1342186

第一步:先安装Mono安装

首先,Mac下需要使用.Net编译后的程序,需要用到跨平台的方案Mono(现阶段微软已推出跨平台的方案.Net Core,不过暂时只支持控制台程序)。安装程序可以从http://www.mono-project.com/download/#download-mac地址下载。

安装完后,在Terminal里执行以下命令:

/Library/Frameworks/Mono.framework/Versions/<Mono Version>/bin/mozroots --import --sync

此步是为了从Mozilla LXR上下载所有受信任的root证书,存于Mono的证书库里。

root证书能用于请求https地址。

接下来如果想要运行Fiddler,还需要把Mono加入到环境变量中。

编辑.bash_profile文件:

sudo vi ~/.bash_profile

加入文本:

export MONO_HOME=/Library/Frameworks/Mono.framework/Versions/5.0.1

export PATH=$PATH:$MONO_HOME/bin

保存后重新打开Terminal,Mono环境已装好。

第二步:Fiddler的安装

从Fiddler官网https://www.telerik.com/download/fiddler下载fiddler-mac.zip的压缩包。

解压到非中文字符的路径下。

Fiddler运行

打开Terminal,进入到刚才解压的Fiddler路径,执行命令运行:

sudo mono Fiddler.exe

五、前端跨域

1、拦截流程

总结:没有设置允许跨域访问,但是依然请求到了数据。

这说明跨域访问的限制并不是浏览器限制发送请求,而是浏览器阻止了请求后数据的加载渲染。

1)、请求允许跨域的访问的url

响应头带有"Access-Control-Allow-Origin","*",告知浏览器可以跨域访问。

浏览器收到response信息,并且检查到响应头中有"Access-Control-Allow-Origin", “*”,因此将数据展示出来。

2)、请求不允许跨域的访问的url

响应头不带有"Access-Control-Allow-Origin","*",没有表示能够跨域访问的请求头信息,所以浏览器不可以跨域访问。

页面收到了信息,但是没有检查到响应头中有允许跨域访问的设置,因此没有对数据进行加载渲染。并且报出下面的异常:No 'Access-Control-Allow-Origin' header ispresent on the requested resource。

2、流程总概:

前端跨域

跨域的来源是同源策略,为什么要有同源策略也是为了安全着想,防止遭受一些网络攻击,比如:csrf(跨站请求伪造)等。

一句话总结:跨域的拦截不是浏览器在请求前拒绝访问不同源URL而是在请求非同源URL后拒绝加载数据!!!

浏览器发送跨域请求

接收response数据

看看响应头是否带有"Access-Control-Allow-Origin","*"这类允许跨域的字样

检查响应头

如果响应头中没有允许跨域访问的配置,则请求到的数据不进行加载,并报出响应异常

如果响应头中有允许跨域访问的设置,正常加载数据

Tags:fiddler过滤

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言