2010-06-19 50 views
1

我正在使用C#HttpWebRequest/HttpWebResponse進行Web Scraping。這個過程大部分是順利進行的。但是在我通過幾頁的方式發佈之後,我已經陷入了用Web瀏覽器測試和HttpWebRequest/HttpWebResponse調用之間似乎不一致的地方。Web瀏覽器和HttpWebRequest之間的POST不一致

當我降落包含一個具有與此類似名稱的輸入元件的頁上出現該問題:「RidiculouslyLongInputName.RidiculouslyLongInputName.RidiculouslyLongInputName @ RidiculouslyLong」

過帳該輸入元件的值導致一個500錯誤當使用HttpWebRequest但通過瀏覽器發佈時工作正常。如果我從帖子數據中刪除這個輸入值,HttpWebRequest將不會得到500錯誤。但是,我堅持從網站的數據驗證問題。

任何想法爲什麼HttpWebRequest失敗?

回答

1

當數據包嗅探器對於準確查看究竟是什麼類型的數據以及它們有什麼不同時,它就是這樣的時代。

http://www.wireshark.org/

是這樣的事情一個很好的工具。

只過濾您感興趣的域名,然後使用HttpWebRequest發送數據包。將分組數據保存在某個地方。重複,但通過瀏覽器做請求。檢查差異。

如果確實是POST變量的一個問題,它應該在HTTP有效載荷中顯而易見。

0

不知道爲什麼你會遇到問題,但我會建議抓取Fiddler的副本並查看瀏覽器在POST請求中發送的內容。有可能有一些不太明顯的事情發生。

0

您還可以在Firefox中使用Firebug擴展。通過安裝並啓用此擴展程序,可以瀏覽Firefox中的整個場景。 FIrebug會告訴你瀏覽器發送的確切請求/響應。然後您可以使用HttpWebRequest儘可能複製它

0

首先感謝MEF響應。這種情況是個人錯誤,所以我刪除了這個問題。

我認爲你的情況最好的工具是Fiddler,但我想還有其他的JavaScript附加到該按鈕或類似的東西,你錯過了模仿。 WebRequest不能爲你做,WebBrowser可以做,因爲它的工作是DOM

爲了正確使用WebRequest,您需要對諸如Fiddler之類的東西進行反向工程。通過查看頁面的源代碼(以及它被引用的JavaScript/CSS ...)很難找到究竟發生了什麼。

相關問題