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

开发互联网应用的过程中,常常会设立或利用网络接口。为了调试对网络接口的使用,往往需要查看流入和流出网络接口的网络流量或数据包。“抓包工具”就是一类用于记录通过网络接口的数据的工具。

我们知道,网络协议是分层设计的,OSI模型将网络协议分为了7个层次。不同的抓包工具,可以在网络协议的不同层次上工作。常用的Wireshark就是一种在网络层上工作的抓包工具,不仅自带大量的协议分析器,而且可以通过编写Wireshark插件来识别自定义的协议。虽然Wireshark功能强大,但是却并不能解决所有的抓包问题,其原因在于:

  • Wireshark工作在网络层;如果计算机配置了IPSec传输层加密,则在网络层的流量都已经被加密,什么也看不到。
  • 当今大量网络接口使用HTTPS加密,Wireshark不能抓取到HTTPS流量的明文内容。

那么,如何抓取到HTTPS请求的明文内容呢?使用Fiddler就可以办到。

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

如何使用FiddlerCap抓取网站访问记录

感谢你汇报了有关我的网站或作品的一个问题。为了定位你的问题原因、并尽快解决这个问题,我请求你根据下列步骤抓取一份网站访问记录。

  1. 下载FiddlerCap,并保存在桌面上
  2. 请关闭除了本页之外的所有浏览器窗口或标签页
  3. 双击桌面上的FiddlerCapSetup.exe文件,单击Install按钮
    安装界面
  4. 安装完毕后,单击Close按钮
    安装完毕界面
    此时如果弹出0xc0000135错误,请下载安装.NET Framework 2.0
  5. 如果我要求你“抓取HTTPS流量”,请勾选Decrypt HTTPS traffic(弹出A note about HTTPS Decryption对话框请单击OK);勾选此选项后,浏览器访问https网站时会弹出证书错误警告,请忽略那些警告
  6. 依次单击Clear Cookies、Clear Cache、1 Start Capture按钮
    主界面-未开始
  7. 如果你使用的浏览器不是IE,请手动将HTTP代理服务器设置成127.0.0.1、端口号8889
  8. 打开浏览器窗口,访问遇到问题的网页并进行必要的操作,使你汇报的问题再次出现
  9. 回到FiddlerCap窗口,依次单击2 Stop Capture、3 Save Capture按钮
    主界面-已抓取
  10. 在Save Session Capture to...对话框中,将网站访问记录.saz文件保存在桌面上
  11. 访问阳光男孩的网上名片查看我的Email地址,并把问题描述、截图、网站访问记录发送给我。
    阳光男孩尊重你的隐私,你提交的网站访问记录只会用于问题的定位和解决,不作其他用途。

说明:FiddlerCap是Eric Lawrence编写的HTTP访问记录抓取软件。 本文面向熟悉计算机基本操作的读者,介绍了该软件的基本使用方法,让你在汇报问题时提供更多信息,用于问题的定位和解决。

用XSLT欣赏所有世博印章

中国2010年上海世博会吸引了众人的关注,五彩缤纷的“世博印章”更是令人趋之若鹜。作为2010年世博会的两大创新项目之一的网上世博会的“我的护照”栏目,可以看到大部分场馆的世博印章图片。那么,能否一次性看到所有的世博印章呢?

Fiddler观察网络流量可以得知:每个片区有一个xml配置文件包含了片区内各场馆的名称和代码。例如,A片区的xml配置文件是:

<!-- http://www.expo.cn/configs/tencent/azone.xml -->
<root>
<err>0</err>
<p>
    <pid>11100001</pid>
    <dis>A片区</dis>
    <cnname>中国国家馆</cnname>
    <code>z0001</code>
    <type>体验馆</type>
    <name>China Pavilion</name>
</p>
<p>
    <pid>11200011</pid>
    <dis>A片区</dis>
    <cnname>哈萨克斯坦馆</cnname>
    <code>c1050</code>
    <type>浏览馆</type>
    <name>Kazakhstan Pavilion</name>
</p>
<p>
    <pid>11200013</pid>
    <dis>A片区</dis>
    <cnname>沙特馆</cnname>
    <code>c1086</code>
    <type>体验馆</type>
    <name>Saudi Arabia Pavilion</name>
</p>
<p>
    <pid>11200025</pid>
    <dis>A片区</dis>
    <cnname>印度馆</cnname>
    <code>c1018</code>
    <type>浏览馆</type>
    <name>India Pavilion</name>
</p>
<!-- 以下省略 -->
</root>

而世博印章的图片URI,可以根据pid字段构造。例如,中国国家馆的印章URI是:http://www.expo.cn/images/HZ/11100001.png

程序处理xml有很多种方法,其中一种好用的方法是XSLT。XSLT是一种声明性的、基于XML的语言,用于将一个或多个xml文档转换成另一些xml文档。XSLT经常被用于将xml数据转换成可以作为网页显示的html或xhtml文档。

用TinyGet投票

前几天,有人托我在东方网的某个评选活动中帮他投票,票数多多益善——也就是所谓的“刷票”。

投票活动页面

打开投票页面,先手工投几票,发现这个活动的投票不需要登录,对于IP地址、投票频率都没有任何限制。

用Fiddler2截取投票HTTP报文

Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.

Fiddler is freeware and can debug traffic from virtually any application, including Internet Explorer, Mozilla Firefox, Opera, and thousands more.