C# 防止阻止自定义Web爬虫程序

C# 防止阻止自定义Web爬虫程序,c#,web-crawler,google-crawlers,C#,Web Crawler,Google Crawlers,我正在创建一个新的网络爬虫程序,使用C对一些特定的网站进行爬网。一切顺利。但问题是,在一些请求之后,一些网站阻止了我的爬虫IP地址。我尝试在爬网请求之间使用时间戳。但没有起作用 有没有办法阻止网站阻止我的爬虫? 一些类似的解决方案会有所帮助(但我需要知道如何应用它们): 模拟谷歌机器人或雅虎slurp 使用多个IP地址(事件假IP地址)作为爬网程序客户端IP 任何解决方案都会有所帮助。如果速度/吞吐量不是一个大问题,那么最好的解决方案可能是安装爬虫程序并通过它进行路由。然后你的爬虫将有一个随

我正在创建一个新的网络爬虫程序,使用
C
对一些特定的网站进行爬网。一切顺利。但问题是,在一些请求之后,一些网站阻止了我的爬虫IP地址。我尝试在爬网请求之间使用时间戳。但没有起作用

有没有办法阻止网站阻止我的爬虫? 一些类似的解决方案会有所帮助(但我需要知道如何应用它们):

  • 模拟谷歌机器人或雅虎slurp
  • 使用多个IP地址(事件假IP地址)作为爬网程序客户端IP

任何解决方案都会有所帮助。

如果速度/吞吐量不是一个大问题,那么最好的解决方案可能是安装爬虫程序并通过它进行路由。然后你的爬虫将有一个随机变化的IP地址

如果您需要对不希望您对其进行爬网的站点进行爬网,那么这是一种非常有效的技术。它还提供了一层保护/匿名性,使爬虫的活动很难追溯到您


当然,如果网站因为你的爬虫速度太快而阻止了你的爬虫,那么也许你应该对它进行一点评级限制。

这就是你阻止伪造者的方法(以防有人在搜索如何阻止伪造者时发现此页面)

在apache中阻止该技巧:

# Block fake google when it's not coming from their IP range's 
# (A fake googlebot) [F] => Failure
RewriteCond %{HTTP:X-FORWARDED-FOR} !^66\.249\.(6[4-9]|[78][0-9]|9[0-5])\.
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0\ \(compatible;\ Googlebot/2\.[01];\ \+http://www\.google\.com/bot\.html\)$ [NC]
RewriteRule .* - [F,L]
或者为了完整性,在nginx中使用一个块

   map_hash_bucket_size  1024;
   map_hash_max_size     102400;

   map $http_user_agent $is_bot {
      default 0;
      ~(crawl|Googlebot|Slurp|spider|bingbot|tracker|click|parser|spider)$ 1;
   }

   geo $not_google {
      default     1;
      66.0.0.0/8  0;
   }

   map $http_user_agent $bots {
      default           0;
      ~(?i)googlebot       $not_google;
   }

我认为你不应该那样做。。。如果网站不想被爬网,你就不应该这样做。如果网站限制你的速度,你最好尊重这一点。他们可能受到资源限制或其他什么。他们可能会完全阻止你。当这种情况发生时,为什么不放慢你的bot速度呢?有些网站只是因为平均http请求速率在12小时内就被屏蔽了。他们不在乎我的爬行速度。这是网络。当你发布一个网站时,你应该尊重所有想看你网页的人。我的问题是,我如何才能在他们想要的爬网率爬网这些网站事件,我不在乎这是否合法@我不同意。我的爬虫和我自己一样有权访问网站。如果网站不希望其内容被爬网,那么它应该在登录流后面保护它,或者首先不让它公开访问。Farzin在那里的评论很好:“我不在乎这是否合法!”谢谢,这很有帮助。我使用了Tor,并确保Privoxy将其用作web代理。但另一个重要的注意事项是,我应该将tor配置为每5分钟更改一次IP地址。顺致敬意,