Безопасен ли SearXNG: скрывает ли он поисковые запросы?
Узнайте, как SearXNG подменяет ваш IP-адрес и кто на самом деле видит историю ваших запросов. Разбор рисков при использовании публичных инстансов и личного VPS сервера.
Безопасен ли SearXNG? Краткий ответ
SearXNG безопасен в одном отношении и небезопасен в другом, поэтому на вопрос «безопасен ли SearXNG» можно ответить только тогда, когда вы уточните, от кого именно вы скрываетесь. SearXNG — это метапоисковая система: она принимает ваш запрос, отправляет его в Google, Bing, DuckDuckGo и любые другие поисковики, которые вы включили, а затем объединяет полученные данные на одной странице результатов. Поисковые системы видят ваш экземпляр (instance). Экземпляр видит вас.
Если вы используете публичный экземпляр, запущенный незнакомым человеком, этот человек получает каждый вводимый вами запрос в открытом виде, и ничто на странице «о проекте» не может доказать, что он с ними делает. На собственном сервере вышестоящие поисковые системы видят адрес вашего сервера вместо вашего домашнего IP-адреса. Эта подмена — вся суть приватности, и она стоит ровно столько, сколько стоит сервер, на котором запущен сервис.
Ничто из этого не скрывает ваши поисковые запросы от вашей собственной сети. Ваш интернет-провайдер (ISP) по-прежнему видит соединение с экземпляром. Ваш DNS-резолвер (domain name system) по-прежнему видит имя хоста. Учитывайте эту границу, пока читаете остальную часть руководства.
Как SearXNG изменяет поисковый запрос
При прямом поиске через Google компания получает ваш IP-адрес, файлы cookie, заголовок User-Agent и адрес страницы, с которой вы перешли. Все эти данные привязываются к профилю, который сохраняется дольше текущей сессии. SearXNG выступает посредником. В документации описаны две основные функции: «удаление конфиденциальных данных из запросов к поисковым сервисам» и «генерация случайного профиля браузера для каждого запроса». Ваши cookie никогда не передаются поисковой системе. Настройки хранятся в вашем браузере, а не в учетной записи на сервере.
По умолчанию используются два заголовка ответа, каждый из которых выполняет важную задачу:
default_http_headers:
X-Robots-Tag: noindex, nofollow
Referrer-Policy: no-referrerReferrer-Policy: no-referrer означает, что при переходе по ссылке целевой сайт не узнает, с какой страницы поиска вы пришли, так как браузер не отправляет заголовок Referer. X-Robots-Tag: noindex, nofollow исключает ваш экземпляр и его страницы результатов из поисковых индексов.
SearXNG не изменяет сам поисковый запрос. Он поступает на экземпляр в полном и читаемом виде, так как именно там завершается TLS (transport layer security). Все пункты ниже вытекают из этого факта.
На публичном экземпляре оператор видит каждый запрос
Собственная документация проекта говорит об этом прямо: пользователи публичного инстанса «должны доверять администратору этого инстанса» и не могут знать, «записываются ли их запросы в журналы, агрегируются ли они, передаются ли третьей стороне или продаются ей». Заявление об отсутствии журналирования на целевой странице остаётся лишь заявлением. Извне проверить его невозможно, поэтому остаётся только доверие. Некоторые публичные инстансы также используют оригинальный Searx, а не этот форк. Это важно, поскольку в Searx с 2023 года не было коммитов в код и не поддерживаемое поисковое ПО — ещё один компонент, которому приходится слепо доверять.
Логирование также является путем наименьшего сопротивления, поскольку настройки по умолчанию передают ваш запрос в URL:
server:
method: "GET"При использовании GET запрос передается как ?q=... в строке запроса. Любой обычный reverse proxy записывает эту строку в свой access log, поэтому запросы фиксируются без чьего-либо специального решения об их записи:
203.0.113.5 - - [20/Aug/2026:09:14:02 +0000] "GET /search?q=redundancy+pay+notice+period&category_general=1&language=en HTTP/1.1" 200 15321 "-" "Mozilla/5.0 (X11; Linux x86_64)"На своем собственном экземпляре вы можете убедиться в этом сами:
sudo tail -n 5 /var/log/nginx/access.logВаши поисковые запросы находятся там, потому что формат лога combined в Nginx записывает $request, что представляет собой полную строку запроса, включая строку параметров (query string). SearXNG никак не может на это повлиять. Переключение экземпляра на method: "POST" перемещает запрос в тело запроса (request body), поэтому он перестает появляться в access log и истории браузера. Документация честно предупреждает, что у метода POST есть недостатки, которые «серьезно ограничивают удобство использования для конечного пользователя», в основном связанные с кнопкой «Назад» в браузере. Это компромисс, на который вы идете осознанно.
Для любого публичного экземпляра из этого следуют два вывода. Оператор может прочитать ваши запросы, независимо от того, собирался он их собирать или нет. Резервная копия или взлом сервера приведут к доступу к тем же логам.
На собственном VPS поисковые системы видят ваш сервер, а не вас
Запустите собственный экземпляр на VPS (виртуальном частном сервере), и суть изменений станет очевидна. Google больше не получает ваш домашний IP-адрес вместе с поисковым запросом. Он получает IP-адрес вашего сервера. Система не может связать этот запрос с вашей учетной записью, телефоном или рекламным профилем, привязанным к вашему домашнему интернет-соединению. Процесс сборки описан в руководстве по запуску собственного экземпляра SearXNG на VPS.
Важно понимать, что именно не изменилось. Поисковые системы по-прежнему видят текст запроса, время, язык и регион, а также общую картину ваших поисковых интересов за месяцы, сгруппированную под одним стабильным адресом. Если вы единственный пользователь, этот адрес представляет собой поток данных одного человека без привязки к имени. Чтобы разорвать эту связь, экземпляр должен обращаться к поисковым системам через исходящий прокси или сеть Tor. SearXNG поддерживает такие конфигурации, но их настройка требует отдельных усилий.
Что по-прежнему видят ваш провайдер, резолвер и хост
Четыре наблюдателя остаются вне зоны влияния этих мер.
- Ваш интернет-провайдер видит TLS-соединение с IP-адресом вашего инстанса и имя хоста в поле SNI (server name indication), которое передаётся в открытом виде во время рукопожатия. Сам запрос он не видит.
- Ваш DNS-резолвер видит запрос к этому имени хоста. Отслеживайте его на клиенте с помощью
sudo tcpdump -ni any port 53во время загрузки страницы, и вы увидите запрос A-записи для вашего инстанса. - Ваш VPS-провайдер управляет оборудованием, поэтому он может читать диск и память виртуальной машины. Шифрование диска внутри арендованной VM не решает эту проблему, так как работающая система хранит ключ в памяти.
- Любой пользователь с правами root на инстансе видит всё. Это касается вас и любого, кто получит доступ к системе позже.
Доступ к инстансу через Tor onion service устраняет первые две проблемы, так как нет публичного имени хоста для разрешения и нет поля SNI для чтения. В руководстве по добавлению v3 onion service на VPS описана настройка, а также утечки, которые в противном случае могли бы связать этот адрес с публичным IP вашего сервера.
Есть ещё один момент, о котором часто забывают. Исходящие запросы вашего сервера видны из сети самого сервера, поэтому провайдер может видеть, что ваша машина постоянно обменивается данными с Google и Bing. Это скорее паттерн трафика, чем конкретный запрос, но он также несёт определённую информацию.
Здесь возникает вопрос о VPN. VPN (virtual private network) переносит точку обзора с вашего интернет-провайдера на компанию-владельца VPN. Это ничего не меняет для оператора инстанса и для поисковых систем, так как системы обращаются к вашему серверу, а не к вам. Сравнение этих вариантов приведено в разборе VPS против VPN.
Почему SearXNG блокирует вас и что на самом деле означает ошибка 429
Существует два разных события, которые описывают как «SearXNG меня заблокировал», и для них требуются разные способы решения.
Первое — это ответ вашего собственного ограничителя с кодом HTTP 429. Это защита SearXNG от ботов, которая по умолчанию отключена:
server:
limiter: true
valkey:
url: valkey://localhost:6379/0По состоянию на август 2026 года для работы ограничителя требуется база данных Valkey, а правила считываются из /etc/searxng/limiter.toml. Также настройте server.public_instance: true, если ваш сервер действительно используют посторонние лица, так как по умолчанию там установлено false, что ограничивает поведение, предназначенное для публичного использования.
Ограничитель выполняет несколько проверок. http_user_agent помечает как бота запрос с отсутствующим User-Agent или с User-Agent, соответствующим известным инструментам, таким как curl и wget. http_accept помечает как бота запрос, в заголовке Accept которого отсутствует text/html. link_token помечает клиента как подозрительного, если он никогда не запрашивает URL /client<token>.css, который загружает обычный браузер. При срабатывании проверки SearXNG возвращает 429 и записывает строку ERROR в логгер botdetection.
Поэтому следующая команда завершается ошибкой, как и должно быть:
curl -s -o /dev/null -w '%{http_code}\n' 'https://searx.example.com/search?q=test'curl отправляет User-Agent: curl/8.5.0 и Accept: */*, поэтому одновременно срабатывают две проверки. Именно поэтому скрипты и AI-агенты получают 429 от инстанса, который корректно работает в браузере. Это нужно исправить перед тем, как направлять поисковый запрос агента на свой инстанс. Полный перечень причин и настроек находится в руководстве по лимитам SearXNG и ошибкам 429.
Стоит упомянуть одну ловушку ограничителя. При работе за reverse proxy SearXNG видит адрес прокси, а не посетителя, если только этот прокси не является доверенным:
[botdetection]
ipv4_prefix = 32
ipv6_prefix = 48
trusted_proxies = ['127.0.0.0/8', '::1']
[botdetection.ip_limit]
link_token = false
[botdetection.ip_lists]
pass_ip = []
block_ip = []Список по умолчанию охватывает прокси на том же хосте. Запросы от прокси в отдельной сети Docker приходят с адреса вида 172.18.0.5, которого нет в списке. В результате все посетители учитываются как один клиент, и первый активный пользователь блокирует доступ для всех остальных. Добавьте эту подсеть в trusted_proxies.
Второй тип блокировки происходит на стороне вышестоящего сервиса. Поисковый движок определяет, что IP-адрес дата-центра, выполняющий множество поисковых запросов, является скрапером, и перестает отвечать вашему серверу. В этом случае вы не получаете 429. Вы получаете страницу результатов, на которой отсутствуют данные от этого движка с пометкой об ошибке, а SearXNG временно приостановит работу с этим движком после повторных сбоев. Причина кроется в IP-адресе вашего VPS, поэтому решения заключаются в выборе других движков и ожидании, а не в настройках ограничителя.
Помогает или мешает использование общего экземпляра с незнакомцами?
И то, и другое, причем в противоположных направлениях, поэтому ответ кажется неоднозначным. Анонимность — это эффект толпы. На загруженном публичном экземпляре ваш запрос уходит с того же адреса, что и запросы тысяч других людей, поэтому ни одна поисковая система не сможет выделить ваш запрос из общей массы. На вашем однопользовательском экземпляре каждый запрос с этого адреса принадлежит вам, и поисковые системы получают чистый поток данных от одного человека без привязки к имени.
Со стороны оператора ситуация обратная. Большая толпа означает, что незнакомый человек владеет текстовыми запросами всей толпы, включая ваши. Ваш собственный сервер означает, что вы владеете своими запросами, и никто другой не имеет к ним доступа.
Поэтому выбирайте вариант в зависимости от реальной угрозы. Вас беспокоит рекламное профилирование и межсайтовое отслеживание? Толпа хорошо справляется с этим, а риск со стороны оператора невелик. Вас беспокоит, что конкретный человек или компания может прочитать один конкретный запрос, который вы выполнили? Толпа здесь совсем не помогает, так как оператор видит открытый текст. Хороший компромисс — экземпляр для небольшой группы знакомых вам людей. Вы получаете небольшую толпу и оператора, которого можете проверить, поскольку этот оператор — вы сами.
Результаты SearXNG лучше, чем у Google?
Нет. У SearXNG нет собственного индекса, поэтому каждый результат на странице получен от вышестоящей поисковой системы, и предел качества ограничен возможностями включенных вами движков. Если отключить Google и Bing, качество поиска упадет в тот же день, так как основная часть охвата сети обеспечивается именно ими.
Что меняется, так это обработка ваших данных. Ничто не строит рекламный профиль на основе запроса и ничто не меняет порядок результатов в зависимости от того, на что вы нажимали на прошлой неделе. Это работает в обе стороны, так как персонализация также учитывает локальный контекст. Запрос вроде «аптека открыта сейчас» через SearXNG будет менее точным, так как движок не имеет данных о вашем местоположении, кроме расположения дата-центра, в котором находится сервер. Укажите регион в настройках, если важны локальные результаты.
Две настройки определяют, насколько сильно ваш экземпляр раскрывает данные, пока вы просматриваете результаты. image_proxy по умолчанию имеет значение false, поэтому миниатюры загружаются напрямую с сайтов, где они размещены, и эти сайты видят IP-адрес вашего браузера. Настройка image_proxy: true перенаправляет их через ваш экземпляр, что увеличивает потребление пропускной способности и оперативной памяти. А formats поставляется только со значением html, поэтому запрос JSON (JavaScript object notation) отклоняется с ошибкой 403 Forbidden:
curl -s -o /dev/null -w '%{http_code}\n' 'https://searx.example.com/search?q=test&format=json'Включите json на публичном экземпляре, и вы фактически опубликуете бесплатный API для парсинга, что является самым быстрым способом получить блокировку IP-адреса вашего сервера со стороны поисковых систем, от которых вы зависите. Держите эту настройку выключенной или защитите её аутентификацией.
Где заканчивается история приватности SearXNG
SearXNG скрывает от поисковых систем того, кто отправляет запрос. Однако он не скрывает ваши действия от вашей сети. Из этого вытекают четыре ограничения.
- Ваш трафик остается неизменным везде, кроме поисковой строки. Все остальные действия машины покидают вашу сеть точно так же, как и раньше.
- Один пользователь на одном сервере является стабильным идентификатором для любой поисковой системы. Этот идентификатор не содержит имени, и в этом заключается вся польза.
- Оператор любого экземпляра видит поисковый запрос в виде открытого текста. Самостоятельное управление экземпляром — единственный вариант, который вы можете проверить.
- Ваши собственные журналы доступа (access logs) восстанавливают ту историю, которую вы пытались избежать. Просматривайте их или переключитесь на
method: "POST", если предпочитаете, чтобы они оставались пустыми.
SearXNG переносит наблюдателя. Он не устраняет наблюдение. Решите, какой наблюдатель вас беспокоит, выберите соответствующий экземпляр и не рассматривайте поисковый интерфейс как средство обеспечения анонимности.
FAQ
Безопасно ли использовать SearXNG на публичном экземпляре?
Это безопасно с точки зрения поисковых систем, но небезопасно с точки зрения оператора. Ваш запрос доходит до сервера в открытом виде, и в документации проекта указано, что пользователи «должны доверять администратору этого экземпляра» и не могут знать, «регистрируются ли их запросы, агрегируются и передаются или продаются третьим лицам». При использовании настроек по умолчанию method: "GET" запрос также попадает в access log обратного прокси-сервера как часть строки запроса, независимо от того, хотел ли этого оператор. Используйте публичный экземпляр для обычного поиска, если вас беспокоит профилирование рекламодателями. Не вводите ничего в поисковую строку, если вы не готовы передать эту информацию владельцу сервера.
Скрывает ли SearXNG мои поисковые запросы от интернет-провайдера?
Текст запроса скрыт. Сама активность — нет. Провайдер видит TLS-соединение с адресом вашего экземпляра и имя хоста в открытом поле SNI при рукопожатии, а ваш DNS-резолвер видит запрос этого имени хоста. Никто из них не видит, что именно вы искали, так как соединение зашифровано. SearXNG — это не VPN, и он не обеспечивает защиту для других действий вашего компьютера.
Почему SearXNG возвращает ошибку 429?
Ошибка 429 исходит от собственного ограничителя экземпляра; это защита от ботов, а не сообщение от Google. Его проверки помечают запрос, если в заголовке Accept отсутствует text/html, а User-Agent не задан или совпадает с такими инструментами, как curl и wget. Третья проверка, link token, помечает клиента, который никогда не запрашивает URL /client<token>.css, загружаемый браузером. Если обратный прокси-сервер отсутствует в trusted_proxies в файле /etc/searxng/limiter.toml, каждый посетитель учитывается как один клиент, поэтому один активный пользователь блокирует остальных. Если же вышестоящая поисковая система блокирует ваш сервер, результаты этой системы просто исчезают со страницы, и вы не получаете ошибку 429.
Становятся ли результаты поиска хуже при самостоятельном хостинге SearXNG?
Иногда да, по двум причинам, которые стоит учитывать. Результаты поступают от вышестоящих поисковых систем, поэтому адрес дата-центра, который системы ограничивают, означает, что ответов будет меньше, а страница — беднее. Кроме того, отсутствует персонализированное ранжирование, что исключает переупорядочивание на основе рекламы, а также удаляет учет локальных намерений, поэтому результаты поиска, зависящие от местоположения, будут менее точными, пока вы не укажете свой регион в настройках.