一晚上终于找到对的东西,作者很专业,这里作为笔记,想学习好东西还是到作者那里^_^

-----------------------------------------------------------

背景

发现使用Fiddler进行抓包时有一部分请求总是没抓到,查看了一下源代码,发现使用WinINET这套API发送的请求都能正常抓到,而使用WinHTTP这套API发送的请求都没有抓到,遂搜索了一下,果然前人们早已给出答案,解决方案原文可以参看Fiddler作者Eric Lawrence大神的一篇博客Using Fiddler with WinHTTP,博客里表示Fiddler对各种HTTP(s) stacks都是能支持的,只是默认启动时只是接管了WinINET代理设置。

Eric的那篇博客里已经列出了相关的方法和代码,本文只是对其略做改进,让同一段代码可以适配不同的Windows版本。

分析

我们需要让Fiddler抓取WinHTTP的包时,要做的就是让WinHTTP的代理设置改为与WinINET一致,因为WinINET在Fiddler启动后使用Fiddler作为代理。这些通过Windows自带命令就可以做到:

  • 在XP下:
    proxycfg -u

  • 在Win7下(使用管理员权限的命令行):
    netsh winhttp import proxy ie
    注:在Win7 64位系统下需要将System32目录和SysWOW64目录下的netsh命令各执行一次,下方将给出的脚本已覆盖这种情况。

但是如果使用频繁,每次都还要去手动敲命令行还是挺痛苦的,作为能偷懒的地方绝不多放过的少年,一劳永逸的方法当然是让它随Fiddler的启动与关闭自动执行这些命令(当然这就是Eric的博客里讲述的方法)。

实现

这可以通过修改CustomRules.js实现(如果想对Fiddler的扩展机制进行深入了解可以去参阅Fiddler官网的文档)。

操作方法:
打开Fiddler > 点击菜单Rules > 点击Customize Rules...

然后就打开了CustomRules.js文件,寻找到OnAttachOnDetach函数,可以将Fiddler启动后与关闭前需要定制的一些自动动作分别填写在它们里头,我们为实现让Fiddler能抓取WinHTTP发送的请求的目的而修改后的代码如下,添加了UpdateWinHTTPSettings函数,在OnAttachOnDetach里添加了对它的调用,修改完后保存即可生效。

static function OnAttach() {
UpdateWinHTTPSettings();
}
static function OnDetach() {
UpdateWinHTTPSettings();
}
static function UpdateWinHTTPSettings() {
var oPSI: System.Diagnostics.ProcessStartInfo
= new System.Diagnostics.ProcessStartInfo();
var os : OperatingSystem = Environment.OSVersion;
if (os.Version.Major >= 6) {
oPSI.UseShellExecute = true;
oPSI.FileName = "netsh.exe";
oPSI.Verb = "runas";
oPSI.Arguments = "winhttp import proxy ie";
System.Diagnostics.Process.Start(oPSI);
// Re-run 32bit version
oPSI.FileName = oPSI.FileName =
Environment.SystemDirectory.Replace("system32", "syswow64")
+ "\\netsh.exe";
if (System.IO.File.Exists(oPSI.FileName)) {
System.Diagnostics.Process.Start(oPSI);
}
}
else {
oPSI.UseShellExecute = true;
oPSI.FileName = "proxycfg.exe";
oPSI.Verb = "open";
oPSI.Arguments = "-u";
System.Diagnostics.Process.Start(oPSI);
}
}

UpdateWinHTTPSettings函数里做的事情其实很简单,就是使用管理员权限执行文章前面说到的命令。

附注

我使用的完整最新的CustomRules.js文件我上传到了一个Gist里,详见:https://gist.github.com/mzlogin/3c5f9781c5bedff3fcfb,如果想直接使用可以复制脚本内容后放置到“我的文档/Fiddler 2/Scripts/CustomRules.js”,也可以在此目录下使用git抓取我的最新定制js文件。

fiddler note的更多相关文章

  1. 抓包工具fiddler

    具体的可以看这个链接,后来补充了些东西,cnblog复制图片太麻烦了 http://note.youdao.com/yws/public/redirect/share?id=37f8556270b44 ...

  2. Fiddler源代码分享

    frmViewer.cs: namespace Fiddler{    using Microsoft.Win32;    using System;    using System.Collecti ...

  3. Fiddler高级技巧 - 映射路径到本地文件夹

    适用场景: 你是前端开发人员,要开发一个小模块,需要用到线上的环境(账号.数据.跨域等),但你又没有权限往线上传文件 你是移动测试人员,需要将一组接口的返回结果替换为另一组,最简单的办法就是使用Fid ...

  4. 使用tcpdump+Wireshark(或Fiddler)做linux服务器的网络请求分析

    我们的服务器上,一般都没有窗口界面,这时候要抓包,用tcpdump是最方便的.而分析网络请求时,wireshark又是相当方便的,这时候我们就需要把它们两个一起来使用了. tcpdump 抓取数据 命 ...

  5. Debug / Inspect WebSocket traffic with Fiddler【转】

    Introduction I have recently written a project using SignalR, which supports HTML 5 WebSocket.  Howe ...

  6. FreeHttp (a fiddler add in to temper the http)

    introduction FreeHttp is a Fiddler plugin. With FreeHttp you can modify the request or response mess ...

  7. FIDDLER的使用方法及技巧总结

    转自: https://www.cnblogs.com/ink-marks/p/6363275.html 一.FIDDLER快速入门及使用场景 Fiddler的官方网站:http://www.fidd ...

  8. how to use fiddler and wireshark to decrypt ssl

    原文地址: http://security14.blogspot.jp/2010/07/how-to-use-fiddler-and-wireshark-to.html Requirements2 C ...

  9. 为什么有的需要安全连接的的application只有开Fiddler才好用?

      Help! Running Fiddler Fixes My App??? Over the years, the most interesting class of support reques ...

随机推荐

  1. 【BZOJ】2157: 旅游

    http://www.lydsy.com/JudgeOnline/problem.php?id=2157 题解:裸lct不解释.. #include <bits/stdc++.h> usi ...

  2. linux修改系统编码

    Windows的默认编码为GBK,Linux的默认编码为UTF-8.在Windows下编辑的中文,在Linux下显示为乱码.一种方法是在windows进行转码,比如使用ue工具在文件-->转换 ...

  3. OSG+VS2010+win7环境搭建---OsgEarth编译

    OSG+VS2010+win7环境搭建---OsgEarth编译 转:http://www.cnblogs.com/hnfxs/p/3161261.html Win7下 osg+vs2010环境搭建 ...

  4. JavaScript的几种继承方式

    看<JavaScript高级程序设计>做的一些笔记 ECMAScript只支持实现继承,不支持接口继承(因为函数没有签名) 原型链(实现继承的主要方法): function SuperTy ...

  5. 关于IAP的破解

    介绍 大概在今年7月份,有俄罗斯黑客破解了苹果的应用内付费(In-App Purchases),设备在不越狱的情况下就可以免费获得来自苹果官网App Store里应用的收费道具.受影响的产品众多,包括 ...

  6. CAS单点登录配置

    见http://download.csdn.net/detail/u010786672/6942715下载.

  7. [CareerCup] 17.9 Word Frequency in a Book 书中单词频率

    17.9 Design a method to find the frequency of occurrences of any given word in a book. 这道题让我们找书中单词出现 ...

  8. CentOS默认开放的本地端口范围

    系统本地开放端口的范围:(默认30000多到60000多) [root@linux2 ~]# vim /etc/sysctl.conf net.ipv4.ip_local_port_range = 1 ...

  9. 解决HDU爆栈的问题

    转载:http://forum.byr.edu.cn/article/ACM_ICPC/51264 大家懂的,鉴于HDU用的是windows服务器,所以stack大小及其坑爹,稍微深一点的递归栈就会s ...

  10. vmware安装centos时遇到无法创建新虚拟机: 不具备执行此操作的权限。

    我的问题是选择文件位置造成的,我选择在了VMware安装的位置,重新选择一个文件夹即可.