Правильный этикет для http-запросов веб-сканера
У меня есть простой веб-сканер, который запрашивает все страницы из карты сайта, которые мне нужно кэшировать и индексировать. После нескольких запросов сайт начинает обслуживать пустые страницы.
В их ничего нет robots.txt
кроме ссылки на их карту сайта, поэтому я предполагаю, что я не нарушаю их "правила". У меня есть описательный заголовок, который точно соответствует моим намерениям, и единственные страницы, которые я сканирую, принадлежат их карте сайта.
Коды состояния http все еще в порядке, поэтому я могу только представить, что они предотвращают большое количество запросов http за короткий промежуток времени. Что считается разумной задержкой между запросами?
Есть ли какие-то другие соображения, которые я упустил из виду, которые могут вызвать эту проблему?
2 ответа
Каждый сайт имеет свои характеристики поиска и использования.
Ключом для любого сканера является эмуляция человеческой деятельности и подчинение robots.txt.
Исчерпывающее сканирование отключит некоторые веб-сайты, и они закроют вас независимо от того, насколько медленно вы работаете, в то время как некоторые хосты не возражают против того, чтобы сканеры мчались и поглощали все сразу.
- Как правило, вы не хотите запрашивать страницы быстрее, чем 6 в минуту (о человеческой скорости).
- Вам будет безопаснее переходить по ссылкам в порядке видимости на веб-странице.
- Старайтесь игнорировать ссылки, которые не видны на веб-странице (многие люди используют honeypot).
Если ничего не помогает, не запрашивайте быстрее, чем одна страница в минуту. Если сайт блокирует вас с такой скоростью, то свяжитесь с ними напрямую - они, очевидно, не хотят, чтобы вы использовали их контент таким образом.
Я думаю, что Википедия имеет достойную ссылку на эту тему. Повинуйтесь им и, ради вежливости, немного больше.
Например, я бы, вероятно, увеличил бы скорость соединения до одного удара в секунду, или я бы рискнул непреднамеренной DoS-атакой.