首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止自定义Web爬虫被阻塞

防止自定义Web爬虫被阻塞
EN

Stack Overflow用户
提问于 2011-10-04 06:28:12
回答 2查看 5.6K关注 0票数 3

我正在创建一个新的网络爬虫使用C#来抓取一些特定的网站。一切都很顺利。但问题是,,一些网站是阻塞我的爬虫IP地址,后,一些请求。我试着在爬行请求之间使用时间戳。但没有起作用。

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

  • 模拟Google或yahoo slurp
  • 使用多个IP地址(事件假IP地址)作为爬虫客户端IP

任何解决办法都会有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-04 06:35:03

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

这是一个非常有效的技术,如果你需要抓取网站,不希望你抓取他们。它还提供了一层保护/匿名,使你的爬虫的活动很难追溯到你。

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

票数 14
EN

Stack Overflow用户

发布于 2013-01-08 11:31:42

这就是你如何阻止冒牌货(以防有人发现这页,同时搜索如何阻止那些)

在apache中阻止这个技巧:

代码语言:javascript
复制
# 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中使用块

代码语言:javascript
复制
   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;
   }
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7644036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档