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

StackOverflow https://stackoverflow.com/questions/32366

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

Решение

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

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

Другие советы

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

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

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

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

Википедия

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top