SearxNG
SearxNG 是一个强大且注重隐私的元搜索引擎,能够汇总来自多个搜索引擎的结果而不跟踪用户活动。本指南将引导您通过 Docker 部署 SearxNG,介绍其可用的 API,并提供如何有效使用这一强大工具的见解。
SearxNG 简介
SearxNG 是一个开源的自托管元搜索引擎,强调用户隐私和灵活性。与传统搜索引擎不同,SearxNG 汇总来自多个搜索引擎的结果,而不存储任何用户数据,从而确保搜索体验的公正和私密。此外,SearxNG 高度可定制,允许用户配置各种方面,如搜索引擎、主题和 API 设置,以满足特定需求。
使用 Docker 部署 SearxNG
Docker 提供了一种简化部署应用程序的方法,通过将其封装在容器中。使用 Docker 部署 SearxNG 可以确保环境的一致性、易于扩展和简化管理。
Docker Compose 配置
以下是用于部署 SearxNG 的 Docker Compose 配置:
services:
searxng:
image: docker.io/searxng/searxng:latest
volumes:
- ./searxng:/etc/searxng:rw
ports:
- 4000:8080
networks:
- perplexica-network
restart: unless-stopped
关键组件:
- 镜像(Image): 使用来自 Docker Hub 的最新 SearxNG 镜像。
- 卷(Volumes): 将本地
./searxng
目录挂载到容器内的/etc/searxng
,并具有读写权限,允许配置持久化。 - 端口(Ports): 将主机的
4000
端口映射到容器内的8080
端口,使服务可以通过http://localhost:4000
访问。 - 网络(Networks): 将容器连接到
perplexica-network
Docker 网络。 - 重启策略(Restart Policy): 确保容器在除非被明确停止外自动重启。
等效的 Docker Run 命令
如果您更喜欢不使用 Docker Compose 部署 SearxNG,可以使用以下 docker run
命令实现相同的设置。根据您的要求,此命令不包含 networks
配置。
docker run -d --name searxng --restart=always -v ./searxng:/etc/searxng:rw -p 4000:8080 docker.io/searxng/searxng:latest
参数说明:
-d
:以分离模式运行容器。--name searxng
:将容器命名为searxng
,便于管理。-v ./searxng:/etc/searxng:rw
:将本地./searxng
目录挂载到容器内的/etc/searxng
,并具有读写权限。-p 4000:8080
:将主机的4000
端口映射到容器内的8080
端口。--restart unless-stopped
:确保容器在除非被明确停止外自动重启。docker.io/searxng/searxng:latest
:指定要使用的 Docker 镜像。
部署步骤:
确保已安装 Docker:
- 如果尚未安装 Docker,请从官方网站下载安装。
创建配置目录:
- 在当前工作目录下创建一个名为
searxng
的目录,用于存储配置文件。mkdir searxng
- 在当前工作目录下创建一个名为
运行 Docker 命令:
- 在终端中执行上述
docker run
命令。
- 在终端中执行上述
访问 SearxNG:
- 打开您的网页浏览器,导航到
http://localhost:4000
以访问 SearxNG 界面。
- 打开您的网页浏览器,导航到
探索 SearxNG API
SearxNG 提供了全面的 API,允许开发人员将其搜索功能集成到应用程序中,自动化查询并以编程方式检索搜索结果。
API 概述
SearxNG API 是基于 REST 的,主要通过 HTTP GET 请求进行交互。以下是主要的端点及其功能:
搜索端点(Search Endpoint):
/search
- 描述: 执行跨配置的搜索引擎的搜索查询。
- 参数:
q
(字符串):搜索查询。categories
(字符串):要包含的类别的逗号分隔列表(例如general,images,videos
)。format
(字符串):响应格式(json
、jsonp
、rss
等)。language
(字符串):搜索结果的语言代码。time_range
(字符串):结果的时间范围过滤(例如day
、week
)。
实例状态(Instance Status):
/status.json
- 描述: 获取 SearxNG 实例的当前状态,包括运行时间和处理的查询数量。
偏好设置端点(Preferences Endpoint):
/preferences.json
- 描述: 获取当前用户的偏好设置。
启用 json 格式
vi settings.yml
formats:
- html
- json # 添加这一行
使用 SearxNG API
要使用 SearxNG API,您可以向相应的端点发送带有必要参数的 HTTP GET 请求。以下是如何使用 API 执行常见任务的示例。
示例 1:执行基本搜索
请求:
GET http://localhost:4000/search?q=OpenAI&format=json
http://localhost:4000/search?q=OpenAI&format=json
描述: 搜索关键词 "OpenAI" 并以 JSON 格式返回结果。
示例响应:
{
"query": "OpenAI",
"number_of_results": 0,
"results": [
{
"url": "https://openai.com/",
"title": "Official site",
"content": "Our work to create safe and beneficial AI requires a deep understanding of the potential risks and benefits, as well as careful consideration of the impact · We research generative models and how to align them with human values",
"publishedDate": null,
"thumbnail": null,
"engine": "brave",
"parsed_url": [
"https",
"openai.com",
"/",
"",
"",
""
],
"template": "default.html",
"engines": [
"google",
"qwant",
"duckduckgo",
"brave"
],
"positions": [
1,
1,
1,
2,
1
],
"score": 22.5,
"category": "general"
},
...
]
}
示例 2:按类别和语言过滤
请求:
GET http://localhost:4000/search?q=Machine+Learning&categories=images,videos&language=en&format=json
描述: 在 images
和 videos
类别中搜索 "Machine Learning",将结果过滤为英语,并以 JSON 格式返回。
示例 3:获取实例状态
请求:
GET http://localhost:4000/status.json
描述: 获取 SearxNG 实例的当前状态。
示例响应:
{
"uptime": "5 days, 4 hours, 23 minutes",
"queries_handled": 1523,
"version": "SearxNG 0.16.0"
}
示例 4:访问用户偏好设置
请求:
GET http://localhost:4000/preferences.json
描述: 获取 SearxNG 中设置的当前用户偏好设置。
示例响应:
{
"language": "en",
"categories": ["general", "images", "videos"],
"theme": "light"
}
认证与安全
默认情况下,SearxNG 不要求 API 访问进行认证。然而,为了增强安全性,特别是在通过互联网公开 API 时,建议实施认证机制,如 API 密钥,或限制访问仅限可信的 IP 地址。此外,启用 HTTPS 可以确保客户端与服务器之间传输的数据被加密。
结论
SearxNG 作为一个注重隐私的元搜索引擎,允许用户在不泄露个人数据的情况下进行搜索。使用 Docker 部署 SearxNG 简化了设置过程,确保了环境的一致性和可维护性。此外,强大的 API 支持使开发人员能够无缝地将 SearxNG 的搜索功能集成到各种应用程序中。
通过遵循本指南,您可以自信地部署 SearxNG,根据您的偏好进行定制,并利用其 API 来增强您的项目。拥抱开源搜索的力量,使用 SearxNG 掌控您的搜索体验。