极致隐私实践指南:自主搭建SearXNG元搜索引擎

本文详细介绍了SearXNG元搜索引擎的原理、使用公共实例的风险与收益,并提供了在Linux和macOS系统上一步步自主搭建和配置私有SearXNG实例的完整技术教程,以实现搜索隐私的最大化控制。

极致隐私更新:自主托管SearXNG指南

在我的书籍《极致隐私》和《OSINT技术》中,我讨论了将SearXNG作为访问搜索引擎结果的一个选项。SearXNG本身并非搜索引擎。它是一个元搜索引擎,聚合了Google、Bing等多个搜索引擎的结果,但不会向被查询的引擎分享用户信息。它也是开源的,可以自主托管。最简单的方法是访问 https://searx.space/ 并测试一些公共实例。

当你试用过SearXNG的任何公共实例后,你可能会看到聚合搜索服务的好处。你可能也会考虑与此行为相关的风险。让我们先从使用非自托管的公共实例的好处说起。

所有查询都是从第三方服务器提交给搜索引擎的。 引擎收集的IP地址是服务器的,而不是你的。 你的查询不容易被引擎关联到单个用户。

这听起来可能很棒,但公共实例也存在风险。请考虑以下几点。

实例的托管方可能会监控你的查询。 如果托管方很受欢迎,某些引擎可能会阻止访问。 如果托管方服务中断,你将无法使用该服务。

总的来说,我认为SearXNG托管方监控查询的情况非常罕见。标准的SearXNG软件无法做到这一点,托管方需要特意去收集用户数据。我只是看不到这样做的动机。然而,一切皆有可能。就我个人而言,我更喜欢自主托管我自己的SearXNG实例。考虑以下好处。

所有查询都是从你的机器直接提交给引擎的。 引擎网站上的追踪代码会从SearXNG页面移除。 最小化使用可以确保所有选项可靠运行。 我的查询不依赖于在线实例的正常运行时间。

一如既往,也存在风险。我的IP地址会随着我发出的每个查询一起提交,但我始终使用VPN,所以我不担心这一点。对我来说,更重要的是能够托管自己的代码,并知道没有其他人会截获这些数据。你永远无法对搜索引擎本身隐藏查询,但你可以通过不直接访问它们的网站来限制加载到浏览器中的信息。同时接收多个搜索引擎的结果非常有利。花些时间确定是使用公共实例还是你自己的实例更适合你。我在我的Linux机器上采取了以下步骤来在本地配置我自己的主机。如果你决定复制这些步骤,你应该完整地复制并粘贴到终端中。请注意,这些步骤与大多已过时的官方安装指南有所不同。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
sudo -H apt-get install -y python3-pip python3-dev python3-babel \
python3-venv uwsgi uwsgi-plugin-python3 \
git build-essential libxslt-dev zlib1g-dev \
libffi-dev libssl-dev
mkdir ~/Documents/searxng && cd ~/Documents/searxng
git clone "https://github.com/searxng/searxng"
python3 -m venv searxngEnvironment
source searxngEnvironment/bin/activate
pip install -U pip
pip install -U setuptools
pip install -U wheel
pip install -U pyyaml
cd searxng && pip install --use-pep517 --no-build-isolation -e .
sudo -H mkdir -p "/etc/searxng"
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searx/settings.yml
sudo -H cp searx/settings.yml /etc/searxng/settings.yml
export SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml"
deactivate

我的机器现在已配置好可以运行SearXNG软件。以下命令执行该程序。

1
2
3
4
cd ~/Documents/searxng
source searxngEnvironment/bin/activate
cd searxng
python searx/webapp.py

软件现在已在后台运行。你可以最小化这个终端窗口。只要它没有完全关闭,服务就在运行。你可以启动Firefox并导航到 http://127.0.0.1:8888 来加载你自己的实例。与公共实例类似,你对SearXNG所做的任何修改在关闭Firefox后都会被清除,除非你将 http://127.0.0.1 添加到存储的cookie中(或直接修改settings.yml文件)。你可以执行以下命令来获取任何更新。

1
2
cd ~/Documents/venv/searxng/searxng
git pull "https://github.com/searxng/searxng"

如果需要,你可以将这两个命令添加到《极致隐私》中介绍的Linux更新脚本中。你也可以将启动命令添加到书中的维护脚本中。下图显示了一个查询示例。注意,我同时收到了来自Google、Bing、Brave和DuckDuckGo的结果。

从任何搜索结果中,我更喜欢点击最右边的“Preferences”选项并进行一些修改。我禁用任何自动完成选项;禁用安全搜索;切换到浅色主题;启用在新标签页中打开结果;并在所有主题中启用首选搜索引擎。你甚至可以修改URL的呈现方式。这允许你移除嵌入的URL追踪代码,强制使用网站的老版本或移动版本,甚至移除联盟追踪链接。当你控制代码时,你的选择是无限的。如果你想保存这些更改,以便在重启Firefox后它们仍能保留,你必须执行以下操作。

  1. 导航到Firefox的设置菜单,点击“隐私与安全”选项。
  2. 点击“删除cookie…”旁边的“管理例外”。
  3. 输入你的SearXNG实例的URL,例如“https://127.0.0.1”。
  4. 点击“允许”和“保存更改”。

我目前在我的笔记本电脑上运行着一个自托管的SearXNG实例,这使我能够从浏览器同时查询数十个搜索引擎,而无需信任任何第三方中间人。由于我很少从移动设备上搜索或浏览网站,我直接在上面依赖一个公共的SearXNG实例。

让我们为那些想要在macOS上自主托管SearXNG的用户重复这个过程。请确保你已按照书中的说明配置好Homebrew。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
brew install python3.13 git
mkdir ~/Documents/venv
cd ~/Documents/venv
python3.13 -m venv searxng
source searxng/bin/activate
cd searxng
git clone "https://github.com/searxng/searxng"
pip3.13 install -U pip
pip3.13 install -U setuptools
pip3.13 install -U wheel
pip3.13 install -U pyyaml
pip3.13 install -U lxml
cd searxng
pip3.13 install --use-pep517 --no-build-isolation -e .
cd searx
sudo mkdir "/etc/searxng"
sudo cp settings.yml /etc/searxng/settings.yml
sed -i '' "s/ultrasecretkey/00ef3039748274b4f2b93d16fb9695de00a4bb35e4c02b7704a167c7aeb274bd/g" /etc/searxng/settings.yml
deactivate

我的机器现在已配置好可以运行SearXNG软件。以下命令执行该程序。

1
2
3
4
cd ~/Documents/venv
source searxng/bin/activate
cd searxng/searxng
python3.13 searx/webapp.py

软件现在已在后台运行。你可以最小化这个终端窗口。只要它没有完全关闭,服务就在运行。你可以启动Firefox并导航到 http://127.0.0.1:8888 来加载你自己的实例。与公共实例类似,你对SearXNG所做的任何修改在关闭Firefox后都会被清除,除非你将 http://127.0.0.1 添加到存储的cookie中(或直接修改settings.yml文件)。你可以执行以下命令来获取任何更新。

1
2
cd ~/Documents/venv/searxng/searxng
git pull "https://github.com/searxng/searxng"

如果需要,你可以将这两个命令添加到书中解释的macOS更新脚本中。你也可以将启动命令添加到那里介绍的维护脚本中。如果有足够多人对在Windows上自主托管感兴趣,我会请Jason在他的Windows机器上研究出相应的步骤。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计