Перейти до основного вмісту

Yacy — распределённый не цензурируемый поисковик: 11 лет спустя

 


YaCy | Wikiwand

11-14 minutes
YaCy

Логотип программы YaCy

Скриншот программы YaCy

ТипОверлейная сетьПоисковая система
РазработчикСообщество YaCy
Написана наJava[1]
Операционная системаКроссплатформенное ПО
Первый выпуск2004
Аппаратная платформаJava Virtual Machine
Последняя версия1.924 (9 февраля 2021)
ЛицензияGNU GPL 2+[d][2]
Сайтyacy.net​ (англ.)
Логотип Викисклада Медиафайлы на Викискладе

YaCy (от англ. Yet another CyberspaceЕщё одно Киберпространство; созвучно с англ. Ya see) — свободно распространяемая децентрализованная поисковая система, построенная по принципу одноранговой сети (P2P). Есть версии для Windows, Linux, MacOSX. Основной программный модуль, написанный на Java, функционирует на нескольких тысячах компьютеров (по состоянию на 2011 год) участников сети YaCy. Каждый участник проекта независимо исследует Интернет, анализируя и индексируя найденные страницы, и складывает результаты индексирования в общую базу данных (так называемый индекс), который совместно используется всеми пользователями YaCy по принципу P2P.

В отличие от частично распределённых поисковых систем, сеть YaCy характеризуется децентрализованной архитектурой. Все узлы эквивалентны и отсутствует центральный сервер. Программа может работать в режиме поискового робота или в качестве локального прокси-сервера, индексируя страницы, посещаемые пользователем (при этом игнорируются страницы с признаками персональных данных — cookies и т. п.).

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

Программа распространяется под лицензией GPL. Проект поддерживает европейское отделение фонда свободного программного обеспечения (FSFE).[3]

Проект YaCy был основан Михаэлем Кристеном (нем. Michael Christen) в 2003 году.

Преимущества и недостатки

Преимущества

  • Совместный поиск может быть осуществлён с YaCy практически всегда: всегда есть часть сети, которая будет доступна.
  • Интернет-пользователи поисковика YaCy независимы от компаний, их рейтинга и их цензуры.
  • Программное обеспечение с открытым исходным кодом, распространяется по лицензии GNU GPL и является бесплатным.
  • При использовании прокси‐сервера клиента он может просканировать страницы из глубокой паутины или неиндексированных сетей общего пользования (таких, как I2P), которые не могут быть проиндексированными обычными поисковыми роботами, такими как в Google, Yahoo или Bing.
  • YaCy не обязательно связан с участием в общественном YaCy-кластере и может, таким образом, быть использованным в качестве поисковой системы в частных сетях (таких, как внутренняя сеть компании) или в частных поисковых сервисах (и индексах) определённой группы страниц.
  • Чем больше узлов находится в сети, тем меньше данных хранится на каждом узле относительно размера индекса, и тем меньше влияние на сеть изменения количества узлов.

Недостатки

  • Спамеры, теоретически, могут запускать свои узлы, возвращающие спам в качестве результата. Поэтому клиент имеет функцию проверки страниц на наличие искомого текста.[4]
  • Из‐за того, что YaCy необходимо связаться с другими узлами для запроса и из‐за упомянутой выше (необязательной) проверки достоверности результатов поиск занимает больше времени, чем в традиционных поисковых системах.[4]
  • Главный клиент не ищет различные формы слов.
  • Протокол YaCy организован с использованием индивидуальных HTTP-запросов, что влечёт за собой бо́льшие задержки, чем при использовании UDP или TCP с постоянным подключением.
  • Главный клиент написан на Java и, в существующей реализации, работает медленно. С ростом объёма локального индекса значительно растёт потребление памяти и снижается скорость работы. Проверка локальной БД объёмом ~20 Гб может занять несколько секунд, до того, как запрос будет отправлен другим пирам.
  • В общественной сети «freeworld» для поиска по Всемирной паутине в настоящее время представлено относительно мало «активных» «старших» узлов (хранящих накопленный поисковый индекс и отвечающих на поисковые запросы от других узлов), и они могут выдать относительно немного результатов по сравнению с крупными поисковыми машинами. На один узел приходится до нескольких десятков миллионов записей, поэтому их полное перемещение между узлами занимает значительное время, и резкое выключение или добавление значительного количества узлов может временно ухудшить качество сети для некоторых поисковых запросов, как это произошло после выпуска версии 1.0 в ноябре 2011 года, когда количество участников быстро увеличилось примерно до 4000[4] или 1000[5]. В начале марта 2012 года «активными» были около 1/6 одновременно работавших узлов.

Программа

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

В сочетании с дополнительными P2P-системами используется прокси, который автоматически индексирует посещённые страницы. Индексирование не производится в тех случаях, когда данные передаются через GET или POST, или же используются куки (cookies) или HTTP-аутентификации (например, страницы, входящие в определённую запароленную зону).[6] Тем самым гарантируется, что действительно индексируются только доступные для общественности данные.

Другие функции

  • YaCy обеспечивает всех пользователей прокси-функцией, которая позволяет также подключаться к другим узлам по адресу ИМЯУЗЛА.yacy или ИМЯХЭША.yacyh. www.ИМЯУЗЛА.yacy может быть главной страницей пользователя, под share.ИМЯУЗЛА.yacy находится файлообменник, а ИМЯУЗЛА.yacy это стандартный интерфейс доступа. Другие поддомены могут быть специально созданы путём создания папки с именем поддомена. Динамический DNS не поддерживается.
  • Кроме .yacy-домена, YaCy предоставляет возможность создавать домашнюю страницу и папки, которые могут быть связаны с текущим IP или адресом динамического DNS и доступны для не YaCy пользователей.
  • YaCy имеет встроенную функцию передачи сообщений с помощью которой можно отправлять текстовые сообщения (с форматированием вики), а также передавать файлы.
  • YaCy имеет встроенные вики и блог.
  • Есть управление закладками, которые могут быть общедоступными и личными.
  • Есть возможность внесения отдельных областей в чёрные списки.
  • Есть OpenSearch-интерфейс. Каждый узел обеспечивает доступность его по адресу http://<адрес-узла>:<порт-узла>/opensearchdescription.xml, например https://web.archive.org/web/20120602233757/http://sciencenet.fzk.de:8080/opensearchdescription.xml . Чтобы добавить вашу персональную поисковую систему YaCy в список поисковых систем Firefox-a нужно открыть этот XML файл в браузере и сохранить его в папку «searchplugins», а затем перезапустить Firefox.

Технология

Программа основана на веб-сервере, который также является кэширующим прокси. Пользователь веб-сервера может получить доступ к оболочке поиска и управления своим собственным узлом. Прокси имеет общий код со сканером, а это значит, что все посещённые через него страницы, которые не являются личными, по умолчанию автоматически записываются в индекс. Кроме того, YaCy предоставляет собственный домен в YaCy-сети, который доступен через прокси-сервер. Для поиска в YaCy интегрированы Solr и Lucene (для версии 1.6 это версии 4.3)

Распределённый индекс

В отличие от файлообменных сервисов, результаты P2P-поиска должны быть доступны немедленно. Чтобы достигнуть этого, YaCy использует распределённую хеш-таблицу (DHT). Это означает, что все распознанные программой URL-адреса и слова отправляются к узлам, которые подходят для хранения соответствующих контрольных сумм слов, узлов или ссылок. При поиске всё работает наоборот: поиск происходит только по узлам, подходящим для хранения хешей URL-адреса для этого слова.

Таким образом, для получения результатов задействуется только часть узлов.

Типы узлов

Сеть YaCy состоит из четырёх различных типов узлов:

Новичок
Эти узлы не могут быть найдены, потому что новичок не имеет связи с сетью. Таким образом, вы видите только себя, если узел - новичок.
Младший
Узел находится за файрволом. Другие относят его к младшим или потенциальным узлам,[7] они видят только последний его запрос и у них нет способа определить, находится ли он до сих пор в сети.
Старший(Senior)
На старший можно попасть снаружи и он является полноправным членом сети YaCy. В статистике сети работающие в данный момент старшие узлы называются активными, неработающие — пассивными.[7]
Главный
Старший, который выгружает список сидов, используемый для начального соединения с другими узлами.

Протокол

Протокол YaCy состоит из текстовых сервлетов, которые обеспечивает встроенный веб-сервер по адресу /yacy/servletname.html. Другие узлы передают данные через GET-параметры и получают ответ в виде простого текста, точный формат отличается для сервлетов.

Начальная загрузка

При начальной загрузке узел пытается связаться с другими узлами YaCy-сети. Сначала ищутся списки узлов. Первый адрес в superseed.txt служит для загрузки устойчивых YaCy-узлов. seeds.txt является ссылками на другие узлы, таким образом устанавливается контакт с YaCy-сетью. В следующий раз, когда вы запустите YaCy, gebootstrapt создаётся из известных с предыдущего запуска узлов сети. В дальнейшем списки узлов будут необходимы, только когда большинство старых ссылок будет недоступно.

См. также

Примечания

  1.  The yacy Open Source Project on Open Hub: Languages Page — 2006.
  2.  GitHub (англ.) — 2007.
  3.  Web Search By The People, For The People: YaCy 1.0Дата обращения: 14 декабря 2011. Архивировано 30 ноября 2011 года.
  4. ↑ 1 2 3 YaCy Bugfix Release 1.01 With New Community ContributionsДата обращения: 6 марта 2012. Архивировано 12 февраля 2012 года.
  5.  Статистика по количеству: график за 2011 год.
  6.  Uk:Privacy — YaCyWiki (недоступная ссылка)
  7. ↑ 1 2 /Network.html

Литература

  • M. Christen: Peer-to-Peer: Eigenes Suchportal mit Yacy einrichten in iX 02/2008, S. 102 ff.
  • M. Schlenker: Gemeinsam gegen Google in OpenSource, 01/2007, November 2006, S. 94-97
  • J. Bager: Europäische Gegenströmung in c’t, 2006/10, 2. Mai 2006, S.172-174 (Onlinetext)
  • R. Sietmann: Wider die Monokultur. P2P-Strategien gegen die Suchmaschinen-Monopolisierung. in c’t, 2005/16, 25. Juli 2005, S.52-53 (Onlinetext)
  • M. Schwarze: Jedermanns Suchmaschine in: HAZ (Artikel als PDF 107 kB)
  • Michael Christen: YaCy — Peer-to-Peer Web-Suchmaschine in Die Datenschleuder, #86, 2005, S.54-57 (gesamtes Heft als PDF 1,7 MB)

Ссылки

Yacy — распределённый не цензурируемый поисковик: три года спустя

Habr
2 min

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

Первое и единственное упоминание о нем на хабре было 29 ноября 2011.

Но с того времени многое изменилось, давайте посмотрим на него еще раз.

Основные возможности и преимущества Yacy:


— Децентрализованный поиск и хранение индекса — в сети DHT
— Три режима работы: 1) Глобальный поисковой индекс, 2) Групповой индекс, 3) Локальный индекс
— Отсутствие рекламы
— Отсутствие какой-либо цензуры (государственной, копирайтной)
— Огромное количество настроек

Основные недостатки:


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

Что изменилось за три года ?


— Поддержка русскоязычных поисковых запросов
— Появились подсказки в во время ввода поискового запроса
— Опережающий поиск — пока вы печатаете yacy уже ищет пиров с данным контентом
— Улучшились алгоритмы поиска и выдачи — более релевантный результат
и миллионы других мелких изменений под капотом.

Как работает Yacy?


Индексирование


Индексирование может быть инициировано следующими путями:
1) Принудительное указание начала сканирования
2) Удаленный запрос от другого пира
3) Настройка проксирования всех запросов от браузера к Yacy с последующий индексацией того, что вы читаете

После составление базы индекса она сохраняется локально, рассылая в сеть информацию о том, что она у вас есть, и распределяется по DHT на соседних пиров.

Поиск


Во время процесса поиска Yacy сначала ищет результаты в локальном индексе, а затем в глобальном, связываясь по DHT c пирами, у которых есть сведения об индексе того или иного запроса/сайта.

Результаты поиска от Yacy:




Официальный сайт проекта yacy.net/en
Windows yacy.net/release/yacy_v1.68_20140209_9000.exe
Linux yacy.net/release/yacy_v1.68_20140209_9000.tar.gz
OS X yacy.net/release/yacy_v1.68_20140209_9000.dmg

Тестовая поисковая страницы search.yacy.net (которая может упасть от большого трафика)

PS Последняя статья была три года назад, если хабр пользователям будет интересна тема децентрализованных поисковых систем, я готов сделать обзор всего функционала Yacy и рассмотреть подробно как она работает

Michael Christen

YaCy

Search Engine Software

YaCy is free software for your own search engine.

Join a community of search engines or make your own search portal!

There are these three use cases you can choose from:

P2P Mode

Web Search by the people, for the people: decentralized, all users are equal, no central, no search request storage, shared index.

Your Search Portal

Your YaCy installation is independent from other peers. Define your own web index and starting your own web crawl.

Intranet Search

Create a search portal for your intranet or web pages or your (shared) file system.


Decentralization

Imagine if, rather than relying on the proprietary software of a large professional search engine operator, your search engine was run by many private computers which aren't under the control of any one company or individual. Well, that's what YaCy does!

Here is a live image of the YaCy network:

YaCy P2P Network

Installation is easy!


Download

By Michael Christen 
yacy.net
6 min

YaCy is available as packages for Linux, Windows, Macintosh and also as Docker Image. You can also install YaCy on any other operation system either by compiling it yourself or using a tarball. YaCy needs Java 8, OpenJDK 8 is recommended.

Improve this doc

Please Support YaCy

YaCy is libre software - licensed GPL-2+. Downloads are provided free, with the option to donate:

You may also download and try out YaCy first and come back later to donate. Please help!

Installation

Installation is very easy on any system. If it looks complex here it's just because we give directions in great detail.

YaCy for Windows

  • IMPORTANT Install Java 8 from https://adoptopenjdk.net/ first.
  • Download YaCy for Windows from https://download.yacy.net/yacy_v1.924_20201214_10042.exe
  • Install YaCy by double-clicking the downloaded installer.
  • When the message "Windows protected your PC (in Windows 10) appears, klick "More info", then "Run anyway". When asked "Do you want to allow this app from an unknown publisher to make changes to your device", klick "yes".
  • Within the YaCy Installer, klick "Next", "I Agree", "Next", "Install", "Finish".
  • To run YaCy, double-click the YaCy app icon (which may be on your desktop).
  • Whenever the following dialog appears click "allow private networks" and "allow access"
  • YaCy is then running on port 8090 on your machine. Open http://localhost:8090 in your web-browser.

YaCy for Linux and other OS

You must install Java 8 on your computer if you don't have it already, and start the YaCy start shell script. YaCy can run under a normal user account, no root rights are needed if Java 8 is already installed.

wget https://download.yacy.net/yacy_v1.924_20210209_10069.tar.gz
  • Unpack the tarball.
tar xfz yacy_v1.924_20210209_10069.tar.gz
  • Run startYACY.sh inside your decompressed folder.
cd yacy
./startYACY.sh

Installing from start to finish would look something like this, depending on your distro.

sudo apt-get update
sudo dpkg --configure -a
sudo apt-get install -y openjdk-8-jre-headless
wget https://download.yacy.net/yacy_v1.924_20210209_10069.tar.gz
tar xfz yacy_v1.924_20210209_10069.tar.gz
cd yacy
./startYACY.sh
  • YaCy is now running on port 8090 on your machine. Open http://localhost:8090 in your web-browser.
  • No password is required when accessing this YaCy instance from localhost.
  • Headless operation can be achieved by setting a password on the host console with bin/passwd.sh <password>.

On Macintosh

Docker

Running YaCy in docker is easy. If you don't hava docker installed, get it from https://docs.docker.com/get-docker/ (for Mac, Windows and Linux) or read the instructions from https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/ to install docker on Raspberry Pi or any other ARM-based devices.

The Official YaCy Images are hosted on Dockerhub at https://hub.docker.com/r/yacy/yacy_search_server

We provide amd64, arm64v8 and arm32v7 versions with the following tags:

  • amd64: yacy/yacy_search_server:latest
  • arm64v8: yacy/yacy_search_server:aarch64-latest
  • arm32v7: yacy/yacy_search_server:armv7-latest

i.e. to install YaCy in intel-based environmnts, run:

docker run -d --name yacy_search_server -p 8090:8090 -p 8443:8443 -v yacy_search_server_data:/opt/yacy_search_server/DATA --restart unless-stopped --log-opt max-size=200m --log-opt max-file=2 yacy/yacy_search_server:latest

then open http://localhost:8090 in your web-browser.

The default login for YaCy on Docker is admin:yacy

To upgrade YaCy, follow the default upgrade pattern for docker images, i.e.

docker stop yacy_search_server
docker rm yacy_search_server
docker pull yacy/yacy_search_server:latest

.. and restart the container with the same command that you used initially to run the container, i.e. (like above)

docker run -d --name yacy_search_server -p 8090:8090 -p 8443:8443 -v yacy_search_server_data:/opt/yacy_search_server/DATA --restart unless-stopped --log-opt max-size=200m --log-opt max-file=2 yacy/yacy_search_server:latest

This will mount the data volume from the upgraded yacy instance.

Configuration with Environment Variables

All of the environment variables (see https://github.com/yacy/yacy_search_server/blob/master/defaults/yacy.init ) can be overwritten with the docker run command. The environment variables are named like those in the yacy.init files, with all . (dot) replaced with _ (underscore), all uppercase and prefixed with YACY_.

For example: the default peer name can be set with network.unit.agent in yacy.init. To pre-set this value during docker run time, set the environmnt variable YACY_NETWORK_UNIT_AGENT. The correspondig run command would be:

docker run -d --name yacy_search_server -p 8090:8090 -p 8443:8443 -e YACY_NETWORK_UNIT_AGENT=Choomba -v yacy_search_server_data:/opt/yacy_search_server/DATA --restart unless-stopped --log-opt max-size=200m --log-opt max-file=2 yacy/yacy_search_server:latest

This can also be used to re-start a previously started image to overwrite the already stored configuration values.

Backup and restore of DATA folder

All data from YaCy is written into the data folder which is stored in the docker volume yacy_search_server_data. To back-up that DATA folder to /tmp/DATA.tar.gz, just run

docker stop yacy_search_server
docker run --rm -v yacy_search_server_data:/opt/yacy_search_server/DATA -v /tmp:/tmp openjdk:8-stretch bash -c "cd /opt/yacy_search_server && tar -cz -f /tmp/DATA.tar.gz DATA"
docker start yacy_search_server

To restore the DATA folder from /tmp/DATA.tar.gz, run

docker stop yacy_search_server
docker run --rm -v yacy_search_server_data:/opt/yacy_search_server/DATA -v /tmp:/tmp openjdk:8-stretch bash -c "cd /opt/yacy_search_server && rm -rf DATA/* && tar xf /tmp/DATA.tar.gz"
docker start yacy_search_server

Kubernetes

# optional: for a quick and easy installation of Kubernetes, run minikube
minikube start
minikube dashboard

# optional: if you want to run YaCy in a new namespace (does not work with minikube dashboard)
kubectl create namespace searchlab
kubectl config set-context --current --namespace=searchlab

# create deployment
kubectl create deployment yacy --image=yacy/yacy_search_server:latest --replicas=1 --port=8090
kubectl get deployment yacy -o wide # optional: show attributes of deployment
kubectl logs -f deployment.apps/yacy # optional: show logs of deployment

# create service
kubectl create service nodeport yacy --node-port=30890 --tcp=8090:8090
kubectl get service yacy -o wide # optional: show service configuration

# optional: access service in minicube
minikube service list
minikube service yacy
minikube service yacy -n searchlab # in case you are running in namespace 'searchlab'

# optional: shut down the YaCy deployment
kubectl delete service yacy
kubectl delete deployment yacy

# optional: switch back to default namespace
config set-context --current --namespace=default

Any OS with Java 8

Automatic development builds can be obtained from https://download.yacy.net/.

Get the Source Code

The source code is inside the generic tarball. It is recommended you clone the Git repository at https://github.com/yacy/yacy_search_server.

Compile YaCy yourself

You can download and build your own YaCy with these simple steps. You need:

  • jdk-8 installed (Oracle Java 8 or OpenJDK 8)
  • ant
  • git

Then run:

git clone https://github.com/yacy/yacy_search_server.git
cd yacy_search_server
ant clean all dist

The compiled tarball will then be in the RELEASE folder.

To start YaCy from your compiled code, simply run:

./startYACY.sh
Просмотры:

Коментарі

Популярні публікації