Каковы основные соображения при создании веб-сканера? - PullRequest
11 голосов
/ 28 августа 2008

Я только начал думать о создании / настройке веб-сканера сегодня и очень мало знаю об этикете / роботе. Большинство статей по этикету, которые я нашел, кажутся старыми и неловкими, поэтому я хотел бы получить некоторые текущие (и практические) идеи от сообщества веб-разработчиков.

Я хочу использовать сканер для обхода "Интернета" для очень простой цели - "соответствует ли разметка сайта XYZ условию ABC?".

Это вызывает у меня много вопросов, но я думаю, что два главных вопроса, которые мне нужно отстранить, это:

  • С самого начала это выглядит немного "ненадежно" - это приемлемо?
  • Какие особые соображения следует принять сканеру, чтобы не расстраивать людей?

Ответы [ 9 ]

9 голосов
/ 28 августа 2008

Повинуйтесь robots.txt (и не слишком агрессивно, как уже было сказано).

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

3 голосов
/ 20 сентября 2008

Все хорошие моменты, сделанные здесь. Вам также придется иметь дело с динамически генерируемыми ссылками Java и JavaScript, параметрами и идентификаторами сеансов, экранированием одинарных и двойных кавычек, неудачными попытками относительных ссылок (используя ../../ для перехода к корневому каталогу), чувствительностью к регистру кадры, перенаправления, куки ....

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

Вам также следует подумать об использовании кода робота-сканера с открытым исходным кодом, поскольку он дает вам огромную поддержку по всем этим вопросам. У меня также есть страница об этом: код робота с открытым исходным кодом . Надеюсь, это поможет!

3 голосов
/ 04 сентября 2008

Также не забудьте подчиниться метатегам бота: http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

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

3 голосов
/ 28 августа 2008

Обязательно укажите URL-адрес в строке пользовательского агента, который объясняет, кто / что / почему сканирует ваш робот.

3 голосов
/ 28 августа 2008

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

Некоторые полезные ссылки:

HTTP / 1.1: определения кода состояния

HTTP-тесты клиента-агрегатора

Википедия

2 голосов
/ 20 сентября 2008

Вам нужно будет добавить некоторые возможности в черные списки сайтов / доменов или других объектов (диапазоны IP-адресов, ASN и т. Д.), Чтобы избежать попадания паука в спам-сайты.

Вам понадобится реализация HTTP с большим контролем времени и поведения. Ожидайте, что многие сайты будут отправлять обратно недействительные ответы, огромные ответы, заголовки мусора, или просто оставить соединение открытым на неопределенное время без ответа и т. Д.

Также не доверяйте статусу 200, означающему «страница существует». По моему опыту, довольно большая часть сайтов отправляет обратно 200 для «Не найдено» или других ошибок (вместе с большим HTML-документом).

2 голосов
/ 28 августа 2008

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

Конечно, соблюдайте robots.txt, но также убедитесь, что строка вашего пользовательского агента содержит точную контактную информацию и, возможно, ссылку на веб-страницу с описанием того, что вы делаете и как вы это делаете. Если веб-администратор видит много запросов от вас и вам интересно, возможно, вы сможете ответить на многие вопросы с помощью информативной веб-страницы.

2 голосов
/ 28 августа 2008

Это вполне приемлемо - просто убедитесь, что он посещает каждую страницу только один раз для каждого сеанса. Поскольку вы технически создаете поискового робота, вы должны соблюдать правила robots.txt и no-cache. Люди по-прежнему могут блокировать вашего бота специально, если это необходимо, блокируя IP-адреса.

Насколько я могу судить, вы ищете только исходный код, поэтому вам нужно создать что-то, что будет следовать <link> s для таблиц стилей и <script src="..."></script> для JavaScripts.

2 голосов
/ 28 августа 2008

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

Другими словами, убедитесь, что ваш сканер не слишком агрессивен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...