руководство по сканированию всей сети? - PullRequest
30 голосов
/ 17 января 2010

Я только что подумал, и мне было интересно, можно ли сканировать всю сеть (точно так же, как большие мальчики!) На одном выделенном сервере (например, Core2Duo, 8-гигабайтная оперативная память, 750 ГБ, диск 100 Мбит / с) .

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

В любом случае, представьте, что вы начинаете с примерно 10000 начальных URL-адресов и выполняете исчерпывающее сканирование ....

это возможно?

Мне нужно сканировать Интернет, но я ограничен выделенным сервером. Как я могу это сделать, есть ли уже решение с открытым исходным кодом?

например, посмотрите эту поисковую систему в реальном времени. http://crawlrapidshare.com результаты чрезвычайно хороши и недавно обновлены .... как они это делают?

Ответы [ 8 ]

22 голосов
/ 17 января 2010

Сканирование в Интернете концептуально просто.Рассматривайте Интернет как очень сложный ориентированный граф.Каждая страница является узлом.Каждая ссылка - это направленное ребро.

Можно начать с предположения, что одна правильно выбранная начальная точка в конечном итоге приведет к любой другой точке (в конце концов).Это не будет строго верно, но на практике, я думаю, вы обнаружите, что это в основном правда.Все еще есть вероятность, что вам понадобится несколько (может быть, тысячи) начальных точек.

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

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

7 голосов
/ 03 июня 2010

Я полагаю, что статья, на которую вы ссылаетесь, называется "IRLbot: масштабирование до 6 миллиардов страниц и далее". Это был веб-сканер с одним сервером, написанный студентами Texas A & M.

Оставляя в стороне вопросы пропускной способности, дискового пространства, стратегии сканирования, robots.txt / politeness - главный вопрос, который у меня возникает, это «почему?» Обход всего веба означает, что вы используете общие ресурсы многих миллионов веб-серверов. В настоящее время большинство веб-мастеров позволяют роботам сканировать их при условии, что они играют хорошо и подчиняются явным и явным правилам вежливого сканирования.

Но каждый крупный бот, который забивает сайт без очевидной выгоды, приводит к тому, что еще несколько сайтов закрывают двери для всего, кроме больших мальчиков (Google, Yahoo, Bing и т. Д.). Итак, вы действительно хотите задать вопрос «почему», прежде чем тратить слишком много времени на то, как.

Предполагая, что вам действительно нужно сканировать большую часть сети на одном сервере, вам нужно получить более толстый канал, гораздо больше места для хранения (например, предполагается, что сжатый текст 2 КБ на страницу, так что 2 ТБ на 1 Б страниц) ), намного больше оперативной памяти, как минимум 4 реальных ядра и т. д. Бумага IRLbot будет вашим лучшим руководством. Возможно, вы также захотите взглянуть на проект crawler-commons для повторного использования фрагментов кода Java.

И последнее слово предостережения. Для невинной ошибки легко вызвать проблемы для веб-сайта, и в этот момент вы окажетесь на приемной стороне сердитого пламени веб-мастера. Поэтому убедитесь, что у вас толстая кожа:)

6 голосов
/ 31 августа 2015

Извините, что возобновил эту ветку через столько времени, но я просто хотел отметить, что если вам просто нужен чрезвычайно большой набор веб-данных, есть гораздо более простой способ получить его, чем пытаться сканировать всю сеть самостоятельно с одним сервером: просто загрузите бесплатную базу данных сканирования, предоставленную проектом Common Crawl . По их словам:

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

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

3 голосов
/ 04 марта 2013

Фильтр Блума для определения, где вы были.

Там будут ложные срабатывания, но вы можете обойти это, применив несколько фильтров Блума и вращая, к которому добавляется Фильтр Блума, и создавая фильтр внушительной длины.

http://en.wikipedia.org/wiki/Bloom_filter

2 голосов
/ 17 января 2010

Смотрите это для альтернативного решения, в зависимости от того, что вы будете делать с таким большим количеством данных (даже если бы это было возможно): http://searchenginewatch.com/2156241

... РЕДАКТИРОВАТЬ: Кроме того, не забывайте, что сеть постоянно меняется, поэтому даже относительно небольшие операции сканирования (например, сайты объявлений, которые собирают списки из множества источников) обновляют циклы, скажем, как 24-часовой цикл. Именно тогда владельцы веб-сайтов могут или не могут начать испытывать неудобства из-за нагрузки, которую ваш сканер создает на свои серверы. И затем, в зависимости от того, как вы используете сканируемый контент, вам нужно подумать о дедупликации, потому что вам нужно научить свои системы распознавать, отличаются ли результаты сканирования, полученные вчера, от результатов сегодняшнего дня и т. Д. ... становится очень «размытым» ", не говоря уже о необходимых вычислительных мощностях.

2 голосов
/ 17 января 2010

Бьюсь об заклад, это возможно. Вам нужно только иметь квантовый процессор и квантовую память.

Серьезно, один сервер не сможет справиться с ростом всей сети. Google использует огромную ферму серверов (насчитывающую десятки, если не сотни тысяч), и не может предоставить вам немедленную индексацию.

Полагаю, если вы ограничены одним сервером и вам нужно сканировать всю сеть, вам действительно нужны результаты этого сканирования. Вместо того, чтобы сосредоточиться на том, «как сканировать Интернет», сосредоточьтесь на том, «как извлечь нужные данные с помощью Google». Хорошей отправной точкой для этого будет: Google AJAX Search API .

0 голосов
/ 17 января 2010

Мне просто интересно, весь Интернет должен быть больше, чем 750 ГБ. Кроме того, структура данных, предназначенная для индексации в Интернете, также занимает много места для хранения.

0 голосов
/ 17 января 2010

Звучит возможно, но двумя реальными проблемами будут сетевое соединение и пространство на жестком диске. Говоря как человек, который почти ничего не знает о сканировании в Интернете, я бы начал с нескольких терабайт хранилища и продолжил свой путь, набирая больше информации, и с хорошим широкополосным интернет-соединением. Для этого необходим глубокий карман!

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