在服务器上用Fiddler抓取HTTPS流量

Fiddler是Eric Lawrence编写的HTTP抓包软件。Fiddler工作在应用层上,作为其他程序的HTTP代理服务器。它可以直接抓取并分析HTTP流量,也可以作为“中间人”抓取并分析HTTPS流量。

Fiddler抓取HTTPS流量的原理

TLS是一种端到端的传输层加密协议,是HTTPS协议的一个组成部分。访问HTTPS站点时,HTTP请求、响应都通过TLS协议在浏览器和服务器之间加密传输,并且通过数字证书技术保证数据的保密性和完整性;任何“中间人”、包括代理服务器都只能转发数据,而无法窃听或者篡改数据。

要抓取HTTPS流量的明文内容,Fiddler必须解密HTTPS流量。但是,浏览器将会检查数字证书,并发现会话遭到窃听。为了骗过浏览器,Fiddler通过使用另一个数字证书重新加密HTTPS流量。Fiddler被配置为解密HTTPS流量后,会自动生成一个名为DO_NOT_TRUST_FiddlerRoot的CA证书,并使用该CA颁发每个域名的TLS证书。若DO_NOT_TRUST_FiddlerRoot证书被列入浏览器或其他软件的信任CA名单内,则浏览器或其他软件就会认为HTTPS会话是可信任的、而不会再弹出“证书错误”警告。

开启HTTPS流量解密功能后,Fiddler将会提示用户将DO_NOT_TRUST_FiddlerRoot证书列入IE浏览器的信任CA名单。用于调试客户端时,这已经足够了;Firefox用户也可以很方便的手动导入DO_NOT_TRUST_FiddlerRoot证书。但是,若要在服务器上抓取ASP.Net发出的HTTPS请求,这是不够的——你必须将DO_NOT_TRUST_FiddlerRoot证书导入“机器帐号”的信任CA名单。

操作录像

该录像演示了下列操作:

  1. 开启Fiddler的HTTPS流量解密功能
  2. 将DO_NOT_TRUST_FiddlerRoot证书导入“机器帐号”的信任CA名单
  3. 将PHP脚本的代理服务器设置为127.0.0.1:8888,并抓取HTTPS请求

主要网络开发框架的抓包配置

Fiddler的工作方式是代理服务器(端口号8888)。只要开发框架支持设置HTTP代理服务器,都可以使用Fiddler。

<span class="com">#PHP curl</span><span class="pln">
$ch</span><span class="pun">=</span><span class="pln">curl_init</span><span class="pun">(</span><span class="str">'https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js'</span><span class="pun">);</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">,</span><span class="pln">CURLOPT_RETURNTRANSFER</span><span class="pun">,</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">,</span><span class="pln">CURLOPT_PROXY</span><span class="pun">,</span><span class="str">'127.0.0.1:8888'</span><span class="pun">);</span><span class="com">//设置代理服务器</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">,</span><span class="pln">CURLOPT_SSL_VERIFYPEER</span><span class="pun">,</span><span class="lit">0</span><span class="pun">);</span><span class="com">//若PHP编译时不带openssl则需要此行</span><span class="pln">
$resp</span><span class="pun">=</span><span class="pln">curl_exec</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">);</span><span class="pln">
curl_close</span><span class="pun">(</span><span class="pln">$ch</span><span class="pun">);</span>
<span class="com"><!-- ASP.Net web.config --></span><span class="pln">
</span><span class="tag"><configuration></span><span class="pln">
  </span><span class="tag"><system.net></span><span class="pln">
    </span><span class="tag"><defaultProxy</span><span class="pln"> </span><span class="atn">enabled</span><span class="pun">=</span><span class="atv">"false"</span><span class="tag">></span><span class="pln">
      </span><span class="tag"><proxy</span><span class="pln"> </span><span class="atn">proxyaddress</span><span class="pun">=</span><span class="atv">"http://127.0.0.1:8888/"</span><span class="tag">/></span><span class="pln">
    </span><span class="tag"></defaultProxy></span><span class="pln">
  </span><span class="tag"></system.net></span><span class="pln">
</span><span class="tag"></configuration></span>

如果你使用linux服务器,请将Fiddler安装在一台Windows计算机上并在Tools - Fiddler Options - Connections勾选Allow remote computers to connect,并手动将FiddlerRoot.cer导入linux服务器的信任CA名单,最后将代理服务器设置成Fiddler所在IP的8888端

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值