【问题标题】:Detecting HTTP client used with HTTP Server?检测与 HTTP 服务器一起使用的 HTTP 客户端?
【发布时间】:2010-04-16 13:23:08
【问题描述】:

我对 2 个不同的客户端 HTTP 使用了相同的请求。一个被服务器接受(IE 中的 java 请求)而不是另一个(Delphi 软件中的 Indy 客户端)?有没有办法检测两个请求之间的请求差异?

有没有办法隐藏我使用 Indy ?

最好的问候

【问题讨论】:

  • 虽然可能服务器正在识别客户端的差异,但更有可能的是您只是没有在 Delphi 代码中发送正确的请求。正如 Ernelli 建议的那样,使用 Wireshark 准确记录每个客户端发送的内容,然后查找除了 User-Agent 标头之外可能相关的差异。
  • 它与许多服务器一起工作,并且仍然与许多服务器一起工作,除了一个(更常用的:()

标签: delphi http indy


【解决方案1】:

我推荐 Fiddler2,它将自己作为代理插入,并将记录所有 http/https 流量,并带有很好的检查器。 http://www.fiddlertool.com/fiddler2/version.asp

【讨论】:

  • 我想在 2000 端口监听 http 请求。在哪里更改?
  • +1 - Fiddler 是要走的路,您还可以动态修改请求,这应该允许您测试是否只是导致它的用户代理字符串!
【解决方案2】:

UserAgent 位于 Request 属性下。默认情况下,Indy 的用户代理字符串是“Mozilla/3.0 (compatible; Indy Library)”。将其更改为 FireFox、IE 或其他可识别浏览器使用的当前字符串。

您可以在UserAgentString 网站上找到示例。

Indy KB PDF有更多详情。

【讨论】:

    【解决方案3】:

    您一定是在谈论用户代理。我不确定你是如何在 Indy 中设置它的,但是 User-Agent HTTP 标头标识了使用的是哪个客户端,因此你可以将它设置为假装你是 IE 或其他浏览器。

    另外,尝试使用 HTTP 嗅探器(Scoop 在 OSX 上是一个很好的嗅探器)来准确查看正在发送的标头,以确保您的行为与浏览器完全一样。

    【讨论】:

    • 请注意,user-agent 标头完全可以由客户端控制。请记住,它可能会被欺骗。
    • 用户代理在 TIdHTTP.Request.UserAgent 属性中指定。
    【解决方案4】:

    wireshark/tcpdump 在大多数需要分析 http 请求的情况下都是您的朋友。

    使用tcpdump可以在服务器上记录请求,然后在wireshark中分析抓取到的数据。

    【讨论】:

      【解决方案5】:

      我认为你最适合 Paros。 http://www.parosproxy.org/

      它将允许您即时监控、暂停和自定义 HTTP 请求。这是一个黑客工具,但你会喜欢的。

      【讨论】:

        【解决方案6】:

        Don's Proxy 是一个不错的免费工具来捕获 HTTP 请求。当您写到您正在使用 Java 时,我假设该工具所需的 JRE 已经安装。

        然后使用TortoiseMerge 或其他一些差异实用程序比较两个请求。

        【讨论】:

          【解决方案7】:

          我终于使用 TidTCPClient 并手动发出了我的 POST 请求,它现在可以工作了(已经很久了)。

          我仍然不明白为什么,但我没有时间照顾这个。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-29
            • 2011-09-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多