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