2010-04-16 60 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實用程序比較兩個請求。

相關問題