Web调试利器fiddler使用

fiddler官网:http://fiddler2.com/

http://wenku.baidu.com/view/053e79d776a20029bd642dc1

http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler.

同类的工具有: httpwatch, firebug

Fiddler 如何捕获Firefox的会话

能支持HTTP代理的任意程序的数据包都能被Fiddler嗅探到,Fiddler的运行机制其实就是本机上监听8888端口的HTTP代理。 Fiddler2启动的时候默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置的,所以将Firefox的代理改为127.0.0.1:8888就可以监听数据了。

Firefox 上通过如下步骤设置代理

点击: Tools -> Options,  在Options 对话框上点击Advanced tab - > network tab -> setting.

看看Fiddler的基本界面

Fiddler中各种图标的含义

Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。

常见得命令有

help  打开官方的使用页面介绍,所有的命令都会列出来

cls    清屏  (Ctrl+x 也可以清屏)

select  选择会话的命令

?.png  用来选择png后缀的图片

bpu  截获request

 Fiddler最强大的功能莫过于设置断点了,设置好断点后,你可以修改httpRequest 的任何信息包括host, cookie或者表单中的数据。设置断点有两种方法

第一种:打开Fiddler 点击Rules-> Automatic Breakpoint  ->Before Requests(这种方法会中断所有的会话)

如何消除命令呢?  点击Rules-> Automatic Breakpoint  ->Disabled

第二种:  在命令行中输入命令:  bpu www.baidu.com   (这种方法只会中断www.baidu.com)

如何消除命令呢?  在命令行中输入命令 bpu

二、设置断点

    请求前中断:可修改头部信息 右键——Edit Header
    请求后中断:可修改返回信息
    1.工具栏:Rules——Automatic Breakpoints——
        Before Requests 在请求前中断
        After Requests  在请求后中断
        Disabled    无断点
        Ignore Image    图片处不设断点
    2.命令行:在Web Sessions List下的黑色输入框输入:
        bpu 在请求前中断
        bpafter 在请求后中断   
       
        bpu http://      访问任何http协议的地址时中断
        bpu http://....  访问某个地址时中断   
        bpu .png         访问png后缀的请求时中断

看个实例,模拟博客园的登录, 在IE中打开博客园的登录页面,输入错误的用户名和密码,用Fiddler中断会话,修改成正确的用户名密码。这样就能成功登录

1. 用IE 打开博客园的登录界面  http://passport.cnblogs.com/login.aspx
2. 打开Fiddler,  在命令行中输入bpu http://passport.cnblogs.com/login.aspx
3. 输入错误的用户名和密码 点击登录
4. Fiddler 能中断这次会话,选择被中断的会话,点击Inspectors tab下的WebForms tab 修改用户名密码,然后点击Run to Completion 如下图所示。
5. 结果是正确地登录了博客园

Fiddler中如何过滤会话

每次使用Fiddler, 打开一个网站,都能在Fiddler中看到几十个会话,看得眼花缭乱。最好的办法是过滤掉一些会话,比如过滤掉图片的会话. Fiddler中有过滤的功能, 在右边的Filters tab中,里面有很多选项,

二个选项是只监控以下网址,如只监控百度,在下面的输入框里填上 www.baidu.com
“No Host Filter”不设置hosts过滤
“Hide The Following Hosts”隐藏过滤到的域名
“Show Only The Following Hosts”只显示过滤到的域名 ,如www.baidu.com  文本框内输入需要过滤的域名,多个域名使用”;“分号分割。fiddler默认会检查http头中设置的host,强制显示http地址中德域名。
“Flag The Following Hosts”标记过滤到的域名。突出显示而已。

 更多filter:http://blog.csdn.net/ohmygirl/article/details/17846199

过滤css.图片等:

设置步骤:
1.勾选 Request Headers 中的 Hide if url contains 过滤项
2.贴入下方正则表达式

REGEX:(?insx)/[^?/]*.(css|ico|jpg|png|gif|bmp|wav)(?.*)?$

 

REGEX: 表示启用正则表达式
(?insx) 设置正则解释的规则, 忽略大小写等.

此表达式表示过滤掉 url 中包括 css, ico, jpg 等后缀的请求

利用fiddler伪造response绕过js验证:

很多网站把数据的校检放在了前端由JS程序完成,JS程序通过ajax请求服务器获得返回值,判断用户输入是否是正确的,为了防止ajax请求被伪造,一般会传递一个变动的回调参数,例如百度验证邮箱的地址是https://passport.baidu.com/v2/?regmailcheck&token=6a60f2edd88a4026f1b7aeaf4889cce4&tpl=tb&apiver=v3&tt=1358522488317&email=ssfsdfsfsssfsfsa%40sina.cn&callback=bd__cbs__109e3a

可以看出来回调参数是bd__cbs__109e3a  ,109e3a  这个参数是变动的,返回值是bd__cbs__109e3a ({“errInfo”:{ “no”: “0″ }, “data”: {}}),所以如果伪造请求的话必须截取请求参数,并返回对应的标识符。

利用fiddler 的autoresponder 可以对请求的url和参数进行正则匹配截断,然后去请求另一个对应的处理程序返回结果。

例如我设置的rule editor :

regex:https://passport.baidu.com/v2/?regmailcheck(.+)callback=(?<args>.*)$

http://hixss.sinaapp.com/s.php?s=${args}

s.php为处理程序

1
2
3
header("Content-type:text/plain");
 $s=$_GET["s"];
echo $s.'({"errInfo":{ "no": "0" }, "data": {}})';
 

请求重定向(模拟响应)Auto Responser

所谓请求无非就是需要调用到的一些资源(包括JS、CGI、CSS和图片等),所谓重定向就是将页面原本需要调用的资源指向其他资源(你能够控制的资源或者可以引用到的资源)。

  1. 你可以将前台服务器的诸多或者某个CGI在本地做个副本,如果正常网络访问环境下该CGI出现了BUG而导致开发环境崩溃时,可以先将这个CGI的请求重定向到本地副本,这样就可以继续进行开发调试你的页面,从而大量节省CGI维护的等待时间
  2. 你也可以将多人同时维护的某个JS文件复制一份出来在本地,当你的开发调试收到他人调试代码干扰时,可以将这个JS的调用重定向到本地无干扰的JS文件,进行无干扰开发,功能开发完成并调试OK之后再将你的代码小心合入到开发环境中,这样就可以避免受到他人干扰专心搞你的模块开发,也就是说能够将JS文件脱离开发环境却不影响线上调试。
  3. 你还可以将样式文件或者图片指向本地如果需要的话。开发过程中的很多页面其实都是惨不忍睹的,究其原因很大程度上是因为缺少对应的样式文件或者没有图片资源,所以样式文件和图片的重定向会对美感稍有要求的开发人员带来福音。

此外,你还可以借此神器搞些有取的事,比如换换百度主页的图片欢乐一下。

打开百度首页,http://www.baidu.com/,首页图片地址为:

http://www.baidu.com/img/bdlogo.gif 

在fiddler点击AutoResponder,点击Add Rule。

增加一个规则,然后编辑这个规则,(要勾选Enable automatic response和unmatched requests passthrough(不匹配的请求通过)。

点击save后就ok了,刷新百度,显示如下:

参考:http://tid.tenpay.com/?p=3011

Fiddler中查询会话

用快捷键Ctrl+F 打开 Find Sessions的对话框,输入关键字查询你要的会话。 查询到的会话会用黄色显示

更多:

http://www.cnblogs.com/wtcsy/p/fildderwirte.html

原文地址:https://www.cnblogs.com/youxin/p/3188292.html