Правильный этикет для http-запросов веб-сканера - PullRequest
8 голосов
/ 28 апреля 2009

У меня есть простой веб-сканер, который запрашивает все страницы из карты сайта, которые мне нужно кэшировать и индексировать. После нескольких запросов сайт начинает обслуживать пустые страницы.

В их robots.txt нет ничего, кроме ссылки на их карту сайта, поэтому я предполагаю, что не нарушаю их "правил". У меня есть описательный заголовок, который точно соответствует моим намерениям, и единственные страницы, которые я сканирую, - это их карта сайта.

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

Есть ли другие пропущенные мной соображения, которые потенциально могут вызвать эту проблему?

Ответы [ 2 ]

9 голосов
/ 28 апреля 2009

Каждый сайт имеет свои характеристики поиска и злоупотребления, которые он ищет.

Ключом для любого сканера является эмуляция человеческой деятельности и подчинение robots.txt.

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

  • Как правило, вы не хотите запрашивать страницы быстрее, чем 6 в минуту (о человеческой скорости).
  • Вам будет безопаснее переходить по ссылкам в порядке видимости на веб-странице.
  • Старайтесь игнорировать ссылки, которые не видны на веб-странице (многие люди используют honeypot).

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

2 голосов
/ 28 апреля 2009

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

Например, я бы, вероятно, увеличил бы скорость соединения до одного удара в секунду, или я бы рискнул непреднамеренной DoS-атакой.

...