这是我伪造浏览器请求的代码:
HttpWebRequest webReq = WebRequest.CreateHttp(url);
webReq.CookieContainer = new CookieContainer();
webReq.Method = "GET";
webReq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0";
webReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webReq.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-us,en;q=0.5");
webReq.Headers.Add(HttpRequestHeader.CacheControl, "no-cache");
webReq.AllowAutoRedirect = true;
webReq.MaximumAutomaticRedirections = 50;
using (WebResponse response = webReq.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream);
return reader.ReadToEnd();
}
}
但是我收到此URL的403 HTTP错误:http://www.alchourouk.com/xml_top_article/rss.xml
我不明白为什么,没有身份验证,没有使用cookie...
在Postman中,我没有错误,这是它生成的代码:
var client = new RestClient("http://www.alchourouk.com/xml_top_article/rss.xml");
var request = new RestRequest(Method.GET);
request.AddHeader("postman-token", "1b40ceba-6311-0fe2-1566-62a2d59950a0");
request.AddHeader("cache-control", "no-cache");
IRestResponse response = client.Execute(request);
这里没什么特别的。知道为什么我的代码出现 403 错误吗?
你需要
的是Referer
的HTTP标头:
webReq.Referer = "http://www.alchourouk.com/";
它会正常工作。
现场演示在这里