9

我在我的 WPF 项目中使用 C#。我想向GET网站发送一个 http 请求,但我想以某种方式发送它,使它看起来像来自浏览器的请求。
现在我有一个发送GET请求并得到响应的程序。我使用WebRequest类来发送GET请求。
我知道浏览器会在它们的请求中添加一些信息,例如浏览器名称、操作系统名称和计算机名称。
我的问题是如何将此信息添加到我的WebRequest? 应该将所有信息(浏览器名称、操作系统名称)分配给哪些属性?

4

3 回答 3

7

您应该使用Fiddler来捕获要模拟的请求。您需要查看检查员>原始。这是从 chrome 到 fiddler 站点的请求示例

GET http://fiddler2.com/ HTTP/1.1
Host: fiddler2.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Referer: https://www.google.be/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,nl;q=0.6

然后,您可以在 webrequest 中设置这些标头中的每一个(请参阅http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx)。

WebRequest request = (HttpWebRequest)WebRequest.Create("http://www.test.com");      
request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36";
于 2013-05-30T05:48:14.237 回答
2

通常,您感兴趣的信息(浏览器、操作系统等)与请求一起在“用户代理”标头中发送。您可以在此处使用其属性控制用户代理:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.useragent.aspx

可能还有其他差异,我建议使用 Fiddler 来捕获您的浏览器流量,然后将其与来自基于 .NET 的 Web 请求的流量进行比较。

http://fiddler2.com/

享受。

于 2013-05-30T05:45:45.283 回答
0

所有此类信息都通过 Web 请求中的标头发送。您还可以在标题中添加此类信息作为键/值对。但是,您只能使用 WebRequest 的 header 属性设置有限的属性;其中许多受到限制。您还可以在以下线程中检查受限标头属性列表:Cannot set some HTTP headers when using System.Net.WebRequest

于 2013-05-30T05:46:05.650 回答