原理

fiddler抓包原理

fiddler 调试器注册到操作系统因特网服务中,系统所有的网络请求都会走fiddler的代理,所以fiddler才能抓包。

Debug traffic from any client and browser 
Fiddler helps you debug traffic from any browser: Internet Explorer, Chrome, Firefox, Safari, Opera, and more. Once you start Fiddler, the web debugger registers itself as the system proxy for Microsoft Windows Internet Services (WinINet), the HTTP layer used by Internet Explorer, Microsoft Office, and many other products. As the system proxy, all HTTP requests from WinINet flow through Fiddler before reaching the target web servers. Similarly, all HTTP responses flow through Fiddler before being returned to the client application. 
Additionally, most devices that support Wi-Fi or Ethernet can be configured to send their traffic to Fiddler; this includes iOS, Android, Windows Phone and Windows RT devices.

fiddler解密https原理

其实fiddler就是中间人攻击,依次经过如下过程

  • fiddler接到客户端的https请求,fiddler将请求转发给服务器
  • 服务器生成公钥证书,返回给fiddler;fiddler拦截下真的公钥证书,并生成伪造的公钥证书给客户端;
  • 客户端使用伪造的公钥证书加密共享密钥发送给fiddler,fiddler使用伪造的私钥解密获取共享密钥
  • fiddler将解密后的共享密钥,使用真正的公钥加密发送给服务器端,服务器使用共享密钥与fiddler通信
  • fiddler使用共享密钥与客户端通信

以上是fiddler抓包解密的原理,这个原理是建立在https建立连接的基础上的,请参考https建立连接过程


下面开始抓包设置教程

设置fiddler抓包

File—–>capture traffic

设置抓https和解密https

Tools—–>fiddler options—–>https—–>capture https traffic—->decrypt https traffic—>Ignore server certificate errors—->Actions—–>Trust root certificate—->之后都是确定

安装根证书后,可以点击Actions—–>open windows certificate manager查看安装到系统的根证书 

根证书的作用:fiddler对每个域名都会生成公钥证书,浏览器会用根证书验证公钥证书的合法性,所以,根证书是https 抓包必不可少的部分

效果

我们那支付宝登陆界面做测试,支付宝登陆页面 

常见问题

http tunnel、http connect

有一种情况,host都是tunnel to, url 后边都带着443,这是什么意思呢? 
查看,请求头会发现使用了Connect方法,Connect方法通常会建议代理(fiddler)与目标服务器建立http tunnel;尽管Connect也可以用于http,但是一般是用于SSL通信;

CONNECT www.google.com:443 
  • 1

这句话表示,代理与服务器的443端口建立了http tunnel,在此之后,所有由客户端发送的内容,都会经由http 代理,转发给www.google.com:443端口;更多http tunnel&http connect资料可以参考http tunnel&connect

解密失败

有的时候,发现解密失败,这是可以查看connect的log。如图

通过查看响应,我们看到,是由于没有设置解密导致的,

This is a CONNECT tunnel, through which encrypted HTTPS traffic flows. 
Fiddler’s HTTPS Decryption feature is enabled, but this specific tunnel was configured not to be decrypted. Settings can be found inside Tools > Fiddler Options > HTTPS. 
A SSLv3-compatible ServerHello handshake was found. Fiddler extracted the parameters below.

Tools > Fiddler Options > HTTPS,选中解密https,选择正确的来源,解密成功。 

当然,如果不想显示Connect,你也可以设置rules----->hide connects 隐藏connect;

如果还是解密失败,可以查看Log标签页,错误信息都会在这里边显示。 

抓不到手机微信

有网友跟我说,抓不到手机微信的数据,这是因为,微信走的http2协议,fiddler不支持http2协议,所以用wireshark抓,但http2也是加密的,所以抓到的数据看不懂。 

手机 https 抓包

如果是抓手机 https,请参考这篇文章fiddler 手机 https 抓包 ,对于手机 https抓包做了更有针对性的解释。

fiddler抓web请求的更多相关文章

  1. Fiddler抓百度请求

    fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书. 一.网页不安全 1.用fiddler抓包时候,打开百度网页:h ...

  2. windows 7安装Fiddler抓HTTPS请求的解决办法

    一.下载安装Fiddler,网上随意一搜就可找到安装软件 二.打开已经安装的fiddler,本人的安装目录:D:\AutoTest\fiddle\Fiddler2 三.打开的页面如图: 三.点击too ...

  3. Fiddler抓包请求前设置断点

    1. 开启抓包 file--->capture traffic2. 在页面底部黑框输入bpu http://www.runoob.com/?s=mysql3. 在浏览器URL输入http://w ...

  4. 【转】Windows中设置Fiddler抓HTTPS请求的解决办法 Unable to configure Windows to Trust the Fiddler Root certificate .

    官网设置 Click Tools > Fiddler Options > HTTPS. Click the Decrypt HTTPS Traffic box. 按照上述要求,我的设置是这 ...

  5. 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试

    1.简介 Fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点.设置断点后,开始拦截接下来所有网页,直到取消断点.这个功能可以在数据包发送之前,修改请求参数:在收 ...

  6. Fiddler抓包【2】_捕获设置

    1.Fiddler抓web网站请求 手动设置方法一:Tools--->WinINET Options--->连接--->局域网设置--->代理服务器勾选后“高级”---> ...

  7. 07- HTTP协议详解及Fiddler抓包

    HTTP协议简介-超文本传输协议 HTTP协议是请求/响应协议:客户端发送请求到服务器,服务器响应该请求.当前版本为1.1版本. HTTP协议特点 1.简单快速:客户向服务器请求服务时,只需传送请求方 ...

  8. 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(14)-Fiddler断点(breakpoints)实战,篡改或伪造数据

    1.简介 上一篇主要就讲解和分享Fiddler断点的理论和操作,今天宏哥就用具体例子,将上一篇中的理论知识实践一下.而且在实际测试过程中,有时候需要修改请求或响应数据,或者直接模拟服务器响应,此时可以 ...

  9. Jmeter Web 性能测试入门 (二):Fiddler 抓取 http/https 请求

    jmeter自带了拦截request的功能,并且也有对应的tool:badboy 可以用.但由于我经常做移动端的项目,个人还是习惯用fiddler来收集request. 官网下载并安装Fiddler ...

随机推荐

  1. date的讲解及分析

    Date() 对象(获取时间的)   不过是用类的写法来实现的:(他也没有私有属性,都是通过__proto__继承来的) Date()  分两大系      一个是get系列(及获取时间)     一 ...

  2. Shell 定时发送邮件检查网站脚本/邮件正文

    #!/bin/bash ############################################################## # File Name: check_http.s ...

  3. C++并发编程 02 数据共享

    在<C++并发编程实战>这本书中第3章主要将的是多线程之间的数据共享同步问题.在多线程之间需要进行数据同步的主要是条件竞争. 1  std::lock_guard<std::mute ...

  4. 通过yum升级gcc/g++至版本4.8.2

    最近在坐一个日期处理的问题,需要安装sxtwl模块,但是gcc版本4.7死活也安装不上,最后测试到只能升级gcc版本到4.8才得以解决 [root@123 bin]# gcc -vUsing buil ...

  5. linux, Django安装MySQL-python==1.2.5报错

    先安装 sudo apt-get install libmysqlclient-dev

  6. python装饰器(docorator)详解

    引言: 装饰器是python面向对象编程三大器之一,另外两个迭代器.生成器只是我现在还没有遇到必须使用的场景,等确实需要用到的时候,在补充资料:装饰器在某些场景真的是必要的,比如定义了一个类或者一个函 ...

  7. Some facts about topological sort

    Definition: a topological sort of a DAG G is a sort such that for all edge (i,j) in G, i precedes j. ...

  8. 8. mybatis实战教程(mybatis in action)之七:实现mybatis分页(源码下载)

    转自:https://blog.csdn.net/tangruyi1992/article/details/52584012 上 一篇文章里已经讲到了mybatis与spring MVC的集成,并且做 ...

  9. maven - 配置强制从指定仓库拉取jar包

    从官方maven仓库拉取依赖,会超级慢.可配置settings.xml,强制从私服拉取 <mirrors> <mirror> <id>nexus-releases& ...

  10. ABAP-SET UPDATE TASK LOCAL

    SET UPDATE TASK LOCAL 影响 切换本地更新任务.这意味着当您指定  CALL FUNCTION ... IN UPDATE TASK时,更新数据不会存储在数据库中,而是存储在ABA ...