2

特定の Web サイトをクロールするために使用する新しいWeb クローラーを作成しています。C#すべてがうまくいく。しかし問題は、一部の Web サイトが、いくつかのリクエストの後にクローラーの IP アドレスをブロックしていることです。クロール リクエスト間にタイムスタンプを使用してみました。しかし、うまくいきませんでした。

Web サイトがクローラーをブロックしないようにする方法はありますか? このようないくつかの解決策が役立ちます(ただし、それらを適用する方法を知る必要があります):

  • Google bot または yahoo slurp をシミュレートする
  • 複数の IP アドレス(イベント フェイク IP アドレス) をクローラー クライアント IP として使用する

どんな解決策も役立ちます。

4

2 に答える 2

13

速度/スループットが大きな問題ではない場合、おそらく最善の解決策は、Tor と Privoxyをインストールして、クローラーをそこにルーティングすることです。その後、クローラーの IP アドレスはランダムに変化します。

これは、クロールしてほしくないサイトをクロールする必要がある場合に非常に効果的な手法です。また、クローラーのアクティビティを追跡することを非常に困難にすることで、保護/匿名性のレイヤーを提供します.

もちろん、速度が速すぎるためにサイトがクローラーをブロックしている場合は、速度を少し制限する必要があります。

于 2011-10-04T06:35:03.037 に答える
-1

そして、これは偽者をブロックする方法です (誰かが偽者をブロックする方法を検索しているときにこのページを見つけた場合に備えて)

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;
   }
于 2013-01-08T11:31:42.660 に答える