Fiddler:监视哪些连接被重置

原文:http://plusium.blogspot.com/2011/11/fiddler-http-status.html

经常翻墙的人想必都知道 gfwlist。这个列表里有几乎所有被 gfw 认证了的网站/网页。有了这个列表,我们的翻墙事业如虎添翼。但是这个列表也有些缺陷,有时候还是会遗漏一些网站。当然,由于各地 ISP 也有一个自己的 gfw,这个列表无法做到全国统一,遗漏也是在所难免。我最近找到了一个软件,可以监视到自己的电脑上每一个连接的详细信息,包括服务器返回的 HTTP 状态码。有了这个软件,我们就能找到那些没有被 gfwlist 收录但被 gfw 认证的网站了。

  当然,对于某个特定的网站,要看它有没有被认证,也不用软件监视,以下几个网站就能帮你判断了:

Test if any website is Blocked in China
Website Test behind the Great Firewall of China
Great Firewall of China

  但是要更加强大、适用范围广、效率更高的方式的话,就必须使用这款软件来搞定了。它就是 Fiddler,MSDN 上也有介绍,链接在此:

Fiddler PowerToy - Part 1: HTTP Debugging


  看到这个软件的界面就知道它的功能非常强大。只要是 HTTP 请求的事情,没有它不知道的。其实最近 nirsoft 也出了一个类似的软件,叫 HTTPNetworkSniffer,不过据我试用了一下后发现,HTTPNetworkSniffer 居然不记录那些返回错误的请求,我才另外搜索一番,找到了 Fiddler 这款软件。

  Fiddler 其 实是一个代理服务器,它启动后会自动修改系统的 WinInet 代理,退出后又自动还原到原设置。Internet Explorer 也是通过 WinInet 代理连接互联网。其他“使用与 IE 相同的代理设置”的软件,就是走了 WinInet 代理。像 Firefox 的代理不与 IE 互通,用的就不是 WinInet。因此如果要让 Fiddler 监视 Firefox 的连接的话,需要另外将 Firefox 的代理服务器设置为 127.0.0.1:8888

WinInet 和 Fiddler 的位置

  Fiddler 启动后就开始监视每个连接的状态。界面如下图所示:



  每一行就是一个客户端到服务器的 HTTP 请求。我们最关心的是“Result”这一列。这一列的值就是“Host”服务器针对“URL”所示请求而返回给客户端的状态码。一般正常的话应该是 200,也有其他状态码,见本文后面的参考链接。这时如果访问一个结构比较复杂的页面比如 facebook 的首页,那么 Fiddler 的界面中就会出现一大堆连接信息。我们只关心哪些连接被重置,所以需要稍微过滤一下结果:

如图所示,勾选“Use Filters”并勾选隐藏正常结果

  然后再看主界面,留下的就都是错误请求了:

Result=504,基本上就意味着被 Reset 了

  接下来,把这些被重置的 Host 加入代理,或者加入自己的 hosts 解析,就能不被 Reset 了。至于每个 HTTP 状态码的意思,可以看维基上的说明。以下两个地方也有,可以补充着参考:
http://www.google.com/support/webmasters/bin/answer.py?answer=40132
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

  本文只是一个最基本的介绍,实用性不太强。下一篇文章打算介绍一下 Fiddler 和 Chrome 浏览器 + Proxy SwitchySharp + gfwlist 配合使用的场景,还有使用 Chrome 自带的工具查看请求状态码的方法。
发表评论