Предотвращение блокировки пользовательского веб-сканера

#c# #web-crawler #google-crawlers

#c# #веб-сканер #google-сканеры

Вопрос:

Я создаю новый веб-сканер, используемый C# для обхода некоторых конкретных веб-сайтов. все идет нормально. но проблема в том, что некоторые веб-сайты блокируют мой IP-адрес сканера после некоторых запросов. Я пытался использовать временные метки между моими запросами обхода. но не сработало.

есть ли какой-либо способ предотвратить блокировку веб-сайтов моим сканером? некоторые подобные решения помогли бы (но мне нужно знать, как их применять):

  • имитация Google bot или yahoo slurp
  • использование нескольких IP-адресов (поддельных IP-адресов событий) в качестве IP-адреса клиента сканера

любое решение поможет.

Комментарии:

1. Я не думаю, что вам следует это делать … если веб-сайт не хочет, чтобы его сканировали, вы не должны этого делать.

2. Если сайт ограничивает скорость, вам лучше уважать это. Они могут быть ограничены ресурсами или чем-то еще. С таким же успехом они могут полностью заблокировать вас. Почему бы просто не замедлить работу вашего бота, когда это произойдет?

3. некоторые из этих веб-сайтов просто блокируются из-за средней скорости http-запросов примерно через 12 часов. им все равно, какая у меня скорость сканирования. это веб. и когда вы публикуете веб-сайт, вы должны уважать всех людей, которые хотят видеть ваши страницы. мой вопрос в том, как я могу сканировать эти веб-сайты с требуемой скоростью сканирования, и мне все равно, законно это или нет!

4. @BvdVen — я должен не согласиться. Мой искатель имеет такое же право посещать сайт, как и я сам. Если сайт не хочет, чтобы его содержимое просматривалось, он должен либо защитить его за потоком входа в систему, либо вообще не делать его общедоступным.

5. Хороший комментарий там Фарзин: «И мне все равно, законно это или нет!».

Ответ №1:

Если скорость / пропускная способность не являются серьезной проблемой, то, вероятно, лучшим решением будет установить Tor и Privoxy и направить ваш поисковый робот через это. Тогда ваш искатель будет иметь случайно изменяющийся IP-адрес.

Это очень эффективный метод, если вам нужно обходить сайты, которые не хотят, чтобы вы обходили их. Он также обеспечивает уровень защиты / анонимности, затрудняя отслеживание действий вашего сканера.

Конечно, если сайты блокируют ваш поисковый робот, потому что он работает слишком быстро, то, возможно, вам следует просто немного ограничить его скорость.

Комментарии:

1. Спасибо, это помогло. Я использовал Tor и уверен, что Privoxy использует его в качестве веб-прокси. но еще одним важным замечанием было то, что я должен настроить tor на изменение IP-адреса каждые 5 минут. С наилучшими пожеланиями.

Ответ №2:

И вот как вы блокируете мошенников (на всякий случай, если кто-то нашел эту страницу во время поиска, как их заблокировать)

Заблокируйте этот трюк в 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;
   }