Каковы ключевые соображения при создании веб-сканера?
-
09-06-2019 - |
Вопрос
Я только сегодня начал думать о создании / настройке веб-сканера и очень мало знаю об этикете веб-сканера / роботов.Большинство работ по этикету, которые я нашел, кажутся старыми и неуклюжими, поэтому я хотел бы получить некоторые актуальные (и практические) идеи от сообщества веб-разработчиков.
Я хочу использовать поисковый робот для обхода "интернета" с очень простой целью - "соответствует ли разметка сайта XYZ условию ABC?".
Это вызывает у меня много вопросов, но я думаю, что в первую очередь мне нужно разобраться с двумя основными вопросами::
- С самого начала это кажется немного "сомнительным" - приемлемы ли подобные вещи?
- Какими конкретными соображениями должен руководствоваться поисковик, чтобы не расстраивать людей?
Решение
Подчиняйся robots.txt (и не слишком агрессивно, как уже было сказано).
Возможно, вы захотите подумать о своей строке user-agent - это хорошее место, где можно быть в курсе того, что вы делаете и как с вами можно связаться.
Другие советы
Помимо хороших ответов WillDean и Einar, я бы действительно рекомендовал вам потратить время на то, чтобы прочитать о значении кодов ответов 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-документом).