运行 Fiddler 作为 HTTPS 服务器的反向代理

2024-06-26

我有以下情况:2台主机,一台是客户端,另一台是HTTPS服务器。

Client (:<brwsr-port>) <=============> Web server (:443)

我安装了Fiddler http://www.telerik.com/fiddler在服务器上,这样我现在就可以在我的服务器上的端口 8888 上运行 Fiddler。

我想达到的情况如下:

|Client (:<brwsr-port>)| <===> |Fiddler (:8888) <===> Web server (:443)|
|-Me-------------------|       |-Server--------------------------------|

我想从我的计算机联系 Fiddler,它会将流量重定向到 Web 服务器。然而,Web 服务器使用 HTTPS。

在服务器上,我设置了 Fiddler 来处理 HTTPS 会话并解密它们。我被要求在服务器上安装 Fiddler 的假 CA 证书,我做到了!我还插入了 Fiddler wiki 页面建议的脚本来重定向 HTTPS 流量

// HTTPS redirect ----------------------- 
FiddlerObject.log("Connect received...");
if (oSession.HTTPMethodIs("CONNECT") && (oSession.PathAndQuery == "<server-addr>:8888")) {
    oSession.PathAndQuery = "<server-addr>:443";
}
// --------------------------------------

然而当我尝试时https://myserver:8888/index.html I fail!

失败详情

在客户端上使用 Fiddler 时,我可以看到 CONNECT 请求启动,但会话失败,因为响应是 HTTP 错误 502。看起来没有人在监听端口 8888。事实上,如果我在服务器上停止 Fiddler,我会得到相同的结果情况:502 网关坏。

请注意,当我尝试时https://myserver/index.html and https://myserver:443/index.html一切正常!

Question

我究竟做错了什么?

有没有可能……?

我想,既然 TLS/SSL 可能在端口 443 上工作,我应该让 Fiddler 监听那里并将我的 Web 服务器移动到另一个端口,例如 444(然后我应该在 IIS 上设置端口 444 上的 https 绑定)。这是对的吗?


如果 Fiddler 没有配置为客户端的代理,而是作为服务器上的反向代理运行,那么事情会变得更加复杂。

运行 Fiddler 作为 HTTPS 的反向代理

  1. 将现有 HTTPS 服务器移至新端口(例如 444)
  2. 在“工具”>“Fiddler 选项”>“连接”内,勾选Allow Remote Clients to Connect。重新启动提琴手。
  3. 在 Fiddler 的 QuickExec 框中,键入!listen 443 ServerName其中 ServerName 是服务器的主机名;例如,对于https://Fuzzle/你会用fuzzle作为服务器名称。
  4. 在 OnBeforeRequest 方法中添加:

    if ((oSession.HostnameIs("fuzzle")) &&
        (oSession.oRequest.pipeClient.LocalPort == 443) ) 
    {
       oSession.host = "fuzzle:444";
    }
    

为什么需要这样做?

The !listen命令指示 Fiddler 创建一个新端点,该端点将在连接时与客户端执行 HTTPS 握手;默认代理端点不会这样做,因为当代理收到 HTTPS 流量的连接时,它会获取 HTTPCONNECT请求而不是握手。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行 Fiddler 作为 HTTPS 服务器的反向代理 的相关文章

随机推荐

  • 您最好的 Swing 设计模式和技巧是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无法在 Android Studio 中将项目迁移到 Gradle

    我有一个项目已经在 Android Studio 中运行 在 Android Studio 中打开项目后 我收到消息 将项目迁移到 Gradle 该项目不使用 Gradle 构建系统 我们建议您迁移到使用 Gradle 构建系统 有关迁移到
  • WooCommerce 订阅 - 获取特定订阅的产品

    有没有办法从 product from subscription 谢谢这个帖子 https stackoverflow com questions 42791096 woocommerce subscriptions get related
  • Ubuntu 16.04 LTS - 如何为 perf 工具启用符号

    我正在尝试为我的应用程序收集一些分析数据 并为此运行性能工具和火焰图 我指的是此幻灯片中提供的说明 https www slideshare net brendangregg java performance analysis on lin
  • struts2应用程序未运行

    我是 Maven 和 struts2 的新手 当我尝试运行我的程序时出现以下错误 严重 调度程序初始化失败 无法加载配置 操作 文件 E workspace metadata plugins org eclipse wst server c
  • 使用 ColdFusion 在电子表格中创建验证下拉列表时出错

    我只是使用 ColdFusion 通过数据库查询在电子表格中创建验证下拉列表 但我收到以下错误 公式中的字符串文字不能大于 255 个 ASCII 字符 任何人都可以帮助纠正这个问题 因为我迫切需要此功能
  • 嵌套 case 语句

    有人可以解释一下嵌套吗case语句变成另一个语句 我指的是达夫的装置 http en wikipedia org wiki Duff 27s device其他所有的地方case语句在里面do while循环关联于case 0 我无法理解它
  • 调用 close() 后大文件没有立即刷新到磁盘?

    我正在使用 python 脚本创建大文件 超过1GB 实际上有 8 个 在创建它们之后 我必须创建将使用这些文件的进程 该脚本如下所示 This is more complex function but it basically does
  • Android 上有某种 ASLR 保护吗?

    我想知道是否有人可以访问具有从程序的一个实例到另一个实例的函数地址相同的库 在同一设备上运行时 地址空间布局将非常一致 许多主要系统库都是由 zygote 预加载的 因此由它分叉出来的子级继承为共享映射 以区分为应用程序 我认为在虚拟内存级
  • 没有实例的 Django Formset

    In this http docs djangoproject com en dev topics forms modelforms inline formsetsDjango Doc 解释了如何创建一个表单集 该表单集允许您编辑属于特定作
  • JAX-RS:不区分大小写的路径

    我已将 REST 服务 方法锚定到 URI 模板 Path注解 它看起来像往常一样 GET Path message Produces application json public Response getMessage 但我的 REST
  • 如何从sqlalchemy中的select语句创建新表?

    我正在使用 sqlalchemy 的核心功能来编写一些抽象层 该层本身需要能够从 select 语句创建表 示例代码 metadata MetaData bind engine table Table table name metadata
  • 开发和生产 SQL Server 之间使用不同的排序规则会出现哪些问题?

    盘问 无法更新 sys columns 还有其他方法吗 https stackoverflow com questions 4018347 unable to update sys columns any other approach含糊地
  • >> 在 PHP 中是什么意思?

    考虑 echo 50 gt gt 4 Output 3 为什么输出3呢 50 的二进制是11 0010 右移 4 次11等于 3 See PHP 文档 http php net manual en language operators bi
  • 如何将参数传递给 JHipster 中的自定义错误消息?

    我仍在学习 JHipster 所以今天我想自己进行一些验证练习 并尝试向我的前端发送有意义的错误消息 这是我尝试过的 在我的控制器中 我有以下内容 POST lessons Create a new lesson of 45 min if
  • 如何在 firebug 中导致调试中断

    我试图在检测到错误时让萤火虫中断 具体来说 我在代码中进行了一些内部检查 例如断言 我希望 Firebug 在失败时停止 我尝试了几种不同的方法 并想知道其他人是怎么做的 以下是我尝试过的方法 输入一些无效代码 以便如果出现错误 函数断言
  • AFNetworking 的 UICollectionView 异步下载错误

    您好 我正在使用目录列表创建 Uicollection 视图 点击单元格时必须下载 PDF 它在一个视图中完美运行 但在另一个视图中出现错误 thread 1 tid 0x4b2ce 0x000000018d14f9b8 CoreFound
  • 为什么 NodeJS 不支持 String.prototype.replaceAll?

    这个字符串方法存在于 browserland 中 但不存在于 Node 中 为什么不 它既不是全新的 也不是异国情调的 replaceAll is part of ECMA 262 src https tc39 es ecma262 sec
  • 如何在响应式设计中禁用缩放功能?

    在使用 iPad iPhone 和 或其他智能手机时 如何禁用响应式设计页面中的放大和缩小功能 有什么办法可以控制吗 创建 META 视口标签 并设置用户可扩展属性为 否 如下所示 更新的答案
  • 运行 Fiddler 作为 HTTPS 服务器的反向代理

    我有以下情况 2台主机 一台是客户端 另一台是HTTPS服务器 Client