防止自定义网络爬虫被阻止

本文关键字:爬虫 网络 自定义 | 更新日期: 2023-09-27 18:10:33

我正在创建一个新的网络爬虫使用C#抓取一些特定的网站。一切都很顺利。但问题是一些网站在一些请求后阻止了我的爬虫IP地址。我尝试在抓取请求之间使用时间戳。

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

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

防止自定义网络爬虫被阻止

如果速度/吞吐量不是一个很大的问题,那么最好的解决方案可能是安装Tor和privvoxy,并通过它们路由您的爬虫。然后你的爬虫将有一个随机变化的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中的一个block

   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;
   }