检测HTTP服务器使用的HTTP客户端?
我用2个不同的客户端HTTP使用相同的请求。一个被服务器接受(在IE中是java请求)而不是另一个(Delphi软件中的Indy Client)?有没有办法来检测这两个请求之间的请求差异?检测HTTP服务器使用的HTTP客户端?
有没有办法隐藏我使用Indy?
致以问候
我终于使用TidTCPClient,并且手动发出了我的POST请求,并且它现在可以工作了(这已经很长时间了)。
我还不明白为什么,但我没有时间照顾这件事。
您一定是在谈论用户代理。我不确定你如何在Indy中设置它,但User-Agent HTTP头标识了使用哪个客户端,因此你可以将它设置为假装你是IE或其他浏览器。
另外,请尝试使用HTTP嗅探器(Scoop是OSX上的一款很好的嗅探器)来准确查看发送了哪些标头,以确保您的行为与浏览器完全相同。
请注意,'user-agent'标头完全由客户端控制。请记住它可以被欺骗。 – BalusC 2010-04-16 13:29:09
I allready将其设置为Mozilla 4.并且它也是如此。 – 2010-04-16 14:08:50
User-Agent在TIdHTTP.Request.UserAgent属性中指定。 – 2010-04-17 08:55:37
UserAgent位于Request属性下。默认情况下,Indy的用户代理字符串是“Mozilla/3.0(compatible; Indy Library)”。将其更改为FireFox,IE或其他识别的浏览器使用的当前字符串。
您可以在UserAgentString网站上找到示例。
在Indy KB PDF有更多的细节。
我推荐Fiddler2,它将自己作为代理插入,并将记录所有http/https流量,并带有很好的检查器。 http://www.fiddlertool.com/fiddler2/version.asp
我想在端口2000上监听http请求。在哪里可以更改? – 2010-04-19 07:00:00
+1 - Fiddler是要走的路,你也可以动态修改请求,让你测试它是否只是引起它的用户代理字符串! – 2010-04-19 10:00:50
Don's Proxy是一个很好的免费工具来捕获HTTP请求。在编写使用Java时,我认为已经安装了此工具所需的JRE。
然后使用TortoiseMerge或其他一些diff实用程序比较两个请求。
尽管服务器认识到客户端的差异是可能的,但更有可能的是,您并没有在您的Delphi代码中发送正确的请求。正如Ernelli所建议的那样,使用Wireshark准确记录每个客户端发送的内容,然后查找除User-Agent标题之外可能相关的差异。 – 2010-04-16 16:58:06
它与许多服务器一起工作,除了一个以外,其他许多服务器仍然可以使用(更多使用:() – 2010-04-17 16:57:58