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

11

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

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

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

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

Ваш Ответ

9   ответов
2

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

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

9

как уже было сказано).

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

Размещение контактной информации в пользовательском агенте - это отличный способ представить вашего паука менеджерам сайта и показать, что вы дружелюбны и заурядны, введя свою контактную информацию. Если у вас есть проблемы с вашим посещением их сайта, у вас может быть шанс поработать с ними, чтобы получить фид или API, если они могут связаться с вами. Запутайте эту информацию или не предоставите ее, и они сразу же доберутся до топора и заблокируют ваш доступ, заблокировав ваш домен. the Tin Man
2

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

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

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

Ты получишь200 для пользовательских страниц ошибок, которые захвачены внутри их сайта и внутренне перенаправлены на «эй, эта страница не существует, но мы помогаем вам сказать об этом». страница, которая на самом деле не помогает автору паука вообще. the Tin Man
3

который объясняет, кто / что / почему сканирует ваш робот.

3

http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

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

Если бы я подозревал, что страница должна существовать, поскольку на нее указывают другие страницы, у меня был бы код, который вставил бы ее в мою очередь «повторных попыток», поэтому я мог бы повторить попытку позже. В случае повторного сбоя счетчик будет увеличиваться до тех пор, пока счетчик не превысит мой лимит повторных попыток или страница не вернется в режим онлайн. the Tin Man
2

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

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

3

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

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

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

3

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

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

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

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

Википедия

2

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

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

Похожие вопросы