初始GET HTTP / 1.1请求的请求头来自哪里?
本文关键字:请求 GET HTTP 初始 | 更新日期: 2023-09-27 18:03:14
edit:我也不相信HttpListener做任何事情
- 所以响应头!=下一个帖子的请求头。
- 为什么浏览器以正确的请求头开始,但从我的客户端简单GET HTTP/1.1看起来不一样,即使原始请求头每个域改变很多次???????
- 这也没有正确使用cookie。为什么呢?
我怎么做才能给我这个浏览器的魔力?
*WebClient没有。requestheaders .
*比较HttpWebRequest头与Chrome/Fiddler嗅探。
using System.Net;
private void Form1_Load(object sender, EventArgs e)
{
CookieContainer cookieJar = new CookieContainer();
cookieJar.GetCookies(new Uri("https://www.google.com"));
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.google.com");
request.CookieContainer = cookieJar;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
this.Text = request.Headers.Count.ToString();
WebHeaderCollection header = request.Headers;
for (int i = 0; i < header.Count; i++)
{
richTextBox1.AppendText(header.GetKey(i) + ": " + header[i] + "'n");
}
}
Fiddler/Chrome组合返回10个请求头;客户端返回2.
也为什么头"Accept-Encoding: gzip,deflate,sdch"总是使响应一些奇怪的2字符的数据翻转?
不太清楚你想要实现什么,但WebClient有一个Headers属性,你可以用它来使请求头看起来像你想要的:
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22";
client.Headers[HttpRequestHeader.AcceptLanguage] = "fr-FR,fr;q=0.8";
... you could set here whatever headers you want
string result = client.DownloadString("http://www.google.com");
}