前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >定制 Fiddler 之将请求发往另一服务器

定制 Fiddler 之将请求发往另一服务器

作者头像
mzlogin
发布2020-04-16 15:40:51
5760
发布2020-04-16 15:40:51
举报
文章被收录于专栏:闷骚的程序员闷骚的程序员

需求

对 Fiddler 抓取的某个特定 SESSION 能在必要时手动操作发往另一个服务器。

设想

在 SESSION 上点击右键弹出的菜单中添加一项,让它对应的响应事件来完成此操作。而联想到 Fiddler 的 Composer 功能能够将某条 SESSION 按自己的需要修改后重新发出,那利用 Composer 来做应该是比较容易实现且便捷的方式。

实现

对 Fiddler 的扩展比较方便的是使用 FiddlerScript,修改 CustomRules.js 来做。比如希望在 hostname 为www.mazhuang.org的 SESSION 上右键后利用自己添加的菜单项将此 SESSION 的 hostname 修改为mazhuang.org后重新发送请求,最终在 CustomRules.js 文件中添加了如下代码即可。

添加方法:

启动 Fiddler > 选择菜单 Rules > 选择菜单项 Customize Rules… > 将如下代码粘贴在OnDetach函数后面 > 保存

注:发现将下面的函数放在OnDetach函数前自己添加的菜单项就不是第一项,而放在OnDetach后就是第一项了,这个很奇怪,未想到合理原因。

代码语言:javascript
复制
public static ContextAction("发送到 mazhuang.org")
function DoSend2RootDomain(oSessions: Fiddler.Session[]){
    var oS: Session = FiddlerApplication.UI.GetFirstSelectedSession();
    if (null == oS) return;
    if (oS.HostnameIs("www.mazhuang.org"))
    {
        oS.hostname = "mazhuang.org";
        FiddlerApplication.DoComposeByCloning(oS);
    }
    else
    {
        MessageBox.Show("不是发往 www.mazhuang.org 的请求");
    }
}

然后就能看到效果了,在 hostname 为www.mazhuang.org的 SESSION 上右键,点击刚刚我们自己添加的「发送到 mazhuang.org」菜单项,会发现 Fiddler 界面右边的 Composer 标签已打开,然后 hostname 已经替换为mazhuang.org,这时再手动点击 Execute 按钮即可将更改 hostname 后的请求重新发出。

缺陷

当前做法有如下缺陷,尚未想到好办法解决:

  1. 会破坏原 SESSION,即将原 SESSION 的 hostname 也替换为了mazhuang.org
  2. 一次操作需要点选右键菜单项后再点击一次 Composer 窗口中的 Execute 按钮才能完成,比较理想的状况是点选右键菜单后即完成替换 hostname 且重新发出请求。

附注

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014/07/20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 设想
  • 实现
  • 缺陷
  • 附注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档