【问题标题】:Are there any tools for diffing HTTP requests/responses?是否有任何用于区分 HTTP 请求/响应的工具?
【发布时间】:2008-12-20 06:31:00
【问题描述】:

我正在尝试调试一些非常挑剔/复杂的网络服务的问题,其中一些理论上发出相同请求的客户端得到不同的结果。像 Charles 这样的调试代理有很大帮助,但由于请求很复杂(大量的标头、cookie、查询字符串、表单数据等),并且客户端以不同的顺序创建标头(这应该是完全可以接受的)等等。这是一个手动完成非常繁琐的过程。

我正在考虑自己写一些东西来解决这个问题,但我希望其他人已经解决了这个问题?

顺便说一句,有没有人知道任何完全开源的类似 Charles 的调试代理?如果 Charles 是开源的,我肯定会将我在这方面所做的任何工作贡献给项目。如果有类似的东西,我宁愿这样做而不是从头开始编写一个单独的程序(特别是因为我认为 Charles 或任何类似物已经拥有我可能需要的所有数据结构等)。

编辑: 只是要清楚 - 文本差异将不起作用,因为行的顺序(例如,至少标题)可能不同和/或行内的值顺序(例如,至少 cookie)可能不同,并且在这两种情况下只要名称、值和元数据都相同,不同的排序不应导致其他方面相同的请求被视为不同。

【问题讨论】:

    标签: http proxy diff


    【解决方案1】:

    Fiddler 有这样一个选项,如果你的路径中有 WinDiff。我不知道它是否适合您的需求,因为乍一看它只是在进行文本比较。但也许它使之前的会话正常化,所以我不能说。

    【讨论】:

    • Fiddler 不会标准化 diff 上的标头,它会以到达的原始形式为您提供到达的内容。
    【解决方案2】:

    如果没有为该作业构建任何目的,您可以使用数据包捕获将消息内容保存到文本文件(将自身插入 IP 堆栈的文件,如 CommView)。您可以通过文本区分不同消息的结果。

    【讨论】:

    • 我已经将结果作为来自 Charles 的文本,但是文本差异不起作用,因为正如我所提到的,不同的客户端以不同的顺序发送不同的标头(这不应该影响响应,因此也应该不影响等价的概念)。
    • 此外,除了逐行更改标头的顺序之外,单个标头中的某些数据(例如 cookie 名称/值对)可以以不同的方式发送顺序,但仍应被视为等效。
    【解决方案3】:

    开源代理 Squid 可能有帮助吗?

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多