如何抓取winhttp接口的请求

转载

江湖传言,Fiddler是捕获客户端与服务器之间的所有HTTP(S) 请求的利器,但是在具体使用过程中,发现使用Fiddler进行抓包时有一部分请求总是没到,多方苦寻之下发现客户端使用WinINET这套API发送的请求都能正常抓到,而使用WinHTTP这套API发送的请求都没有抓到,遂搜索了一下,发现Fiddler对各种HTTP(s) stacks都是能支持的,只是默认启动时只是接管了WinINET代理设置。

分析

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

在XP下: proxycfg -u

在Win7下(使用管理员权限的命令行):netsh winhttp import proxy ie

注:在Win7 64位系统下需要将Synstem32 目录和SysWOW64目录下的netsh命令各执行一次,下方将给出的脚本已覆盖这种情况。

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

实现

这可以通过修改CustomRules.js实现。操作方法:打开Fiddler > 点击菜单Rules > 点击Customize Rules...

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文章转载于搜狗测试 背景 江湖传言,Fiddler是捕获客户端与服务器之间的所有HTTP(S) 请求的利器,但是...
    夜境阅读 2,795评论 0 0
  • 原因 在现实项目中,由于开发的经常调试,接口的不稳定,和接口文档的不及时更新,我们选择做接口测试,更多的需要自己抓...
    我为峰2014阅读 8,377评论 1 5
  • Fiddler工具简介 Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和h...
    nayli阅读 10,363评论 0 36
  • Fiddler_官方网站Fiddler_官方文档Fiddler_官方视频Fiddler_官方插件1、Filddle...
    52Alice阅读 12,338评论 0 10
  • 每天来碗毒鸡汤,没有负能量哪有正能量! 每日推送负能量小漫画,不喜请自行绕道! 看着人家装逼,心里是不是不爽, 但...
    Walliswang9阅读 2,087评论 0 0