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