2010-06-19 48 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 ...)很难找到究竟发生了什么。

相关问题