Каковы основные соображения при создании веб-сканера?

Вопрос задан: 11 лет назад Последняя активность: 5 лет назад
up 11 down

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

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

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

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

9 ответов

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

Реклама

up 9 down accepted

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

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

up 3 down

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

up 3 down

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

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

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

up 3 down

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

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

up 3 down

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

Несколько полезных ссылок:

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

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

Википедия

up 2 down

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

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

up 2 down

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

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

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

up 2 down

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

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

up 2 down

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

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

Ошибка 505

Что-то пошло не так

Попробуйте воспользоваться поиском