如何更改来源,抓取网页遇到
分类:面向对象

利用 WebClient、WebRequest 抓取网页时出现 403 禁止的错误,有些没报错,但抓下来是空白,有没有解决办法呢?

  • ASP.NET 抓取网页内容-文字
  • ASP.NET 抓取网页内容-图片
  • ASP.NET 抓取网页内容-Post 数据
  • ASP.NET 抓取网页内容-防止重定向
  • ASP.NET 抓取网页内容-保持登录状态
  • ASP.NET 抓取网页内容-把当前会话带到 WebRequest 中
  • ASP.NET 抓取网页内容-如何更改来源 Referer 和 UserAgent
  • ASP.NET 抓取网页内容-用 WebClient 轻松实现文件下载上传、网页抓取
  • ASP.NET 抓取网页内容-WebBrowser 的 Navigated、DocumentCompleted 使用及区别

这是由于服务器或防火墙做了一定的限制,常见的限制是限制 UserAgent,由于抓取代码没有指定 UserAgent,就限制到了。


// WebClient 的 WebClient wc = new WebClient(); wc.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); wc.Encoding = System.Text.Encoding.GetEncoding("gbk"); string html = wc.DownloadString(url); // HttpWebRequest 的 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(""); //request.Headers.Add(HttpRequestHeader.Referer, ""); // 错误 //request.Headers[HttpRequestHeader.Referer] = ""; // 错误 request.Referer = ""; // 正确

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("");
//request.Headers.Add(HttpRequestHeader.Referer, ""); // 错误
//request.Headers[HttpRequestHeader.Referer] = ""; // 错误
request.Referer = ""; // 正确

终极解决办法是:利用模拟浏览器抓取,秒杀一切限制,那就是使用 WebBrowser 控件,并处理 DocumentCompleted 事件。

注释掉的两句是不对的,会发生错误:

具体技术请参见:WebBrowser 的 Navigated、DocumentCompleted 使用及区别。

此标头必须使用适当的属性进行修改。
参数名: name

UserAgent 类似。

相关阅读

  • ASP、Ajax 更改来源 Referer 和 UserAgent
  • ASP.NET 获取当前页和来源页 URL

  • ASP.NET 抓取网页内容-文字

  • ASP.NET 抓取网页内容-图片
  • ASP.NET 抓取网页内容-Post 数据
  • ASP.NET 抓取网页内容-防止重定向
  • ASP.NET 抓取网页内容-保持登录状态
  • ASP.NET 抓取网页内容-把当前会话带到 WebRequest 中
  • ASP.NET 抓取网页内容-如何更改来源 Referer 和 UserAgent
  • ASP.NET 抓取网页内容-用 WebClient 轻松实现文件下载上传、网页抓取
  • ASP.NET 抓取网页内容-WebBrowser 的 Navigated、DocumentCompleted 使用及区别

本文由10bet手机官网发布于面向对象,转载请注明出处:如何更改来源,抓取网页遇到

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文