如何从代码中模拟Web浏览器http请求?

时间:2013-05-30 05:35:12

标签: c# wpf http

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

3 个答案:

答案 0 :(得分:3)

您应该使用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

然后,您可以在网络请求中设置这些标头中的每一个(请参阅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";

答案 1 :(得分:1)

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

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

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

http://fiddler2.com/

享受。

答案 2 :(得分:0)

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