System.ArgumentException:“必须使用适当的属性或方法修改“Referer”标头。

其他环境
¥50.00

使用HttpWebRequest采集一个网站的信息,需要设置Referer,直接使用request.Headers.Add(name,value)的方法报错:

System.ArgumentException:“必须使用适当的属性或方法修改“Referer”标头。
Parameter name: name”

public static string FetchHtml(string url, Encoding en)
        {
            if (en == null) en = Encoding.UTF8;
            String html;
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Timeout = 600000 ;
            
            
            request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0";
         
            request.Headers.Add("Referer", "https://www.baidu.com");
          
            WebResponse response = request.GetResponse();

            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream, en);
            String responseFromServer = reader.ReadToEnd();
            html = responseFromServer;
            Encoding en2 = GetEncoding(response.ContentType);//responseFromServer
            reader.Close();
            response.Close();
            //if (en2.EncodingName != en.EncodingName)
            //{
            //    Stream htmlStream = WebRequest.Create(url).GetResponse().GetResponseStream();
            //    StreamReader htmlReader = new StreamReader(htmlStream, en2);
            //    html = htmlReader.ReadToEnd();
            //}
            //彻底过滤 \r \n
            Regex regex = new Regex(@"\r\n", RegexOptions.IgnoreCase);
            html = regex.Replace(html, "");
            regex = new Regex(@"\t", RegexOptions.IgnoreCase);
            html = regex.Replace(html, "");
    &nbs
            

最佳答案

原因分析

c#已经提供了Referer专用属性,只能通过request.Referer = "*“”的方式来修改,不能用Add方法

使用修改属性的方法直接修改就可以:

request.Referer="https://www.baidu.com";


其他类似属性还有:


Header设置方
Accept由 Accept 属性设置。
Connection由 Connection 属性和 KeepAlive 属性设置。
Content-Length由 ContentLength 属性设置。
Content-Type由 ContentType 属性设置。
Expect由 Expect 属性设置。
Date由 Date 属性设置。
宿主由 Host 属性设置。
If-Modified-Since由 IfModifiedSince 属性设置。
范围由 AddRange 方法设置。
Referer由 Referer 属性设置。
Transfer-Encoding由 TransferEncoding 属性设置(SendChunked 属性必须为 true)。
User-Agent由 UserAgent 属性设置。


一人征战无人陪 T0 被采纳率100%
2020-11-07 10:49
打赏 0 0
页面统计
424 访问
0 帮助
0.00 打赏

hierror 2019 © hierror.com 京ICP备13026190号-1

通知消息
  • 暂无任何消息