2010-04-16 160 views
3

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

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

致以问候

+1

尽管服务器认识到客户端的差异是可能的,但更有可能的是,您并没有在您的Delphi代码中发送正确的请求。正如Ernelli所建议的那样,使用Wireshark准确记录每个客户端发送的内容,然后查找除User-Agent标题之外可能相关的差异。 – 2010-04-16 16:58:06

+0

它与许多服务器一起工作,除了一个以外,其他许多服务器仍然可以使用(更多使用:() – 2010-04-17 16:57:58

回答

0

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

我还不明白为什么,但我没有时间照顾这件事。

1

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

另外,请尝试使用HTTP嗅探器(Scoop是OSX上的一款很好的嗅探器)来准确查看发送了哪些标头,以确保您的行为与浏览器完全相同。

+1

请注意,'user-agent'标头完全由客户端控制。请记住它可以被欺骗。 – BalusC 2010-04-16 13:29:09

+0

I allready将其设置为Mozilla 4.并且它也是如此。 – 2010-04-16 14:08:50

+1

User-Agent在TIdHTTP.Request.UserAgent属性中指定。 – 2010-04-17 08:55:37

0

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

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

0

我认为你是最好的与帕罗斯。 http://www.parosproxy.org/

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

2

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

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

Indy KB PDF有更多的细节。

3

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

+0

我想在端口2000上监听http请求。在哪里可以更改? – 2010-04-19 07:00:00

+0

+1 - Fiddler是要走的路,你也可以动态修改请求,让你测试它是否只是引起它的用户代理字符串! – 2010-04-19 10:00:50

0

Don's Proxy是一个很好的免费工具来捕获HTTP请求。在编写使用Java时,我认为已经安装了此工具所需的JRE。

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

相关问题