[开源,快3级了] SoSearch — 用 Rust 写的免费 Web Search API,不用 Key,并发聚合 DuckDuckGoBraveYahoo

2026-04-11 11:561阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:

  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

以上选择我承诺是永久有效的,接受社区和佬友监督:

快3级了,给佬友发个自己用AI写的小玩具~

做 AI Agent / RAG 的佬友们应该都体验过——给 LLM 接一个搜索引擎有多贵。

SerpAPI 100 次/月、Tavily 1000 次/月的免费额度,跑个 demo 都不够用,生产环境更别提了。

所以我用 Rust 撸了一个:

SoSearch — 免费、无 Key、开箱即用的 Web Search API

GitHub: GitHub - NetLops/SoSearch · GitHub

它能干什么?

一个 HTTP 请求,同时查 3 个搜索引擎,聚合去重返回标准 JSON:

curl "http://localhost:10080/search?q=rust+lang"

{ "query": "rust lang", "results": [ { "title": "Rust Programming Language", "url": "https://rust-lang.org/", "snippet": "A language empowering everyone to build reliable and efficient software.", "engine": "duckduckgo" }, { "title": "Rust (programming language) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Rust_(programming_language)", "snippet": "Rust is a general-purpose programming language emphasizing performance...", "engine": "brave" } ] }

为什么造这个轮子?

痛点 SoSearch 的解决方案
SerpAPI / Tavily 要钱要 Key 完全免费,自建服务,不依赖第三方 API
Python 搜索库速度慢 Rust + Tokio 异步并发,3 个引擎同时查
用 requests 直接爬会被 ban 底层用 rquest(Rust 版 curl_cffi),TLS 指纹伪装成 Chrome 124
返回格式五花八门 统一标准化 JSON 输出,直接对接 LLM / Agent

技术栈

  • Axum — Tokio 生态 Web 框架
  • Tokio — 异步运行时,FuturesUnordered 并发调度
  • rquest — TLS 指纹模拟的 HTTP 客户端(相当于 Rust 版 curl_cffi)
  • scraper — HTML 解析 + CSS 选择器提取

支持的搜索引擎

引擎 特点
DuckDuckGo 隐私优先的标准搜索
Brave Search 独立索引,不依赖 Google/Bing
Yahoo 底层走 Bing,作为补充源

架构上是插件式的,新增引擎只需要:

  1. src/engines/ 下写一个 scraper
  2. 在 enum 里注册一下

就完事了。

快速上手

本地运行:

git clone https://github.com/netlops/SoSearch.git cd SoSearch cargo run --release # 服务默认跑在 10080 端口

Docker 一行搞定:

make docker-compose-up # 服务跑在 11380 端口

接到你的 Agent 里:

import requests resp = requests.get("http://localhost:10080/search", params={"q": "最新 AI 论文"}) results = resp.json()["results"] for r in results: print(f"[{r['engine']}] {r['title']}: {r['url']}")

项目结构

src/ ├── main.rs # Axum 路由 + 并发引擎调度 ├── models.rs # 标准化数据结构 └── engines/ ├── mod.rs # 引擎枚举 + trait dispatch ├── duckduckgo.rs # DuckDuckGo 爬虫 ├── yahoo.rs # Yahoo 爬虫 (Bing) └── brave.rs # Brave Search 爬虫

代码量很少,核心逻辑不到 300 行,Rust 新手也能轻松看懂和魔改。

内置 AI Agent Skills

项目已经配了 .gemini/.agents/ 的 agent skills,用 Gemini CLI 或类似工具可以直接问:

  • “帮我新增一个 Google 引擎” → 自动走 sosearch-engine-dev 工作流
  • “Docker 部署有报错” → 自动走 sosearch-api-ops 排障

使用场景

  • 给 LLM 接搜索:RAG、AI Agent 的 web search tool
  • 学习 Rust:真实项目,async/await + scraper + axum 全覆盖
  • 搜索结果分析:聚合多引擎结果做比较研究
  • 隐私搜索代理:自建不带追踪的搜索 API

License

CC BY-NC 4.0 — 非商用,随便用,欢迎 PR


GitHub: GitHub - NetLops/SoSearch · GitHub

觉得有用的话给个 呗,也欢迎提 issue 和 PR ~

有什么想聚合的搜索引擎可以在评论区说,我会考虑加上

网友解答:
--【壹】--:

比grok搜索强吗


--【贰】--:

先收藏吧,目前用的搜索工具还不错


--【叁】--:

厉害了大佬,感谢分享


--【肆】--:

超酷的项目,正好用得上


--【伍】--:

支持开源大佬


--【陆】--:

厉害了,大佬


--【柒】--:

感谢大佬了!


--【捌】--:

佬可以打包成 mcp 服务,接入会更方便
天下苦 exa 久矣()


--【玖】--:

谢谢分享


--【拾】--:

省钱不省token, 搜索结果喂给LLM该占多少上下文还是多少,这个没法省

但省钱是真省——SerpAPI超过100次/月就要$$了,这个自建随便造,不花一分钱(配合隔壁佬友的 【开源】💧Resin:把你的代理订阅变成专业、高性能的代理池 | 粘性路由 · 智能调度 · 十万级节点接管 · 极简部署 unlimit 直接爽歪歪)

要是你之前让Agent用browser tool去扒整个网页那种玩法,换这个确实能省不少token,毕竟一个网页几千token,这边返回就标题+摘要几十个token的事


--【拾壹】--:

感谢大佬!


--【拾贰】--:

没用API,直接爬的网页版 就跟你开浏览器搜 search.brave.com 一样,拿到HTML后css选择器抠结果出来就行了。底层用了rquest做TLS指纹伪装(curl_cffi),Brave那边以为是个正常


--【拾叁】--:

前排,厉害佬


--【拾肆】--:

会比传统搜索省token吗


--【拾伍】--:

厉害啊 佬


--【拾陆】--:

brave是如何绕过需要key的


--【拾柒】--:

Windows 10系统,尝试自己编译了一下,需要备齐以下环境:

  1. Rust (stable-x86_64-pc-windows-msvc)
  2. C/C++ 编译器: Visual Studio 2022 (包含 MSVC v14.42 和 MSBuild v17.12)
  3. Windows SDK: 10.0.22621.0 (Windows 11 SDK) (关键依赖,提供 C11 标准支持)
  4. 构建系统: CMake (由 VS 2022 自带或独立安装均可)
  5. 底层汇编器: NASM (必须在系统 PATH 环境变量中)
  6. FFI 接口生成器大脑: LLVM / Clang (必须通过 LIBCLANG_PATH 环境变量指定其 bin 目录) 如果安装LLVM到C盘就没这个问题了。
  7. 脚本环境 (BoringSSL 隐式依赖): Go 语言环境和 Perl (Strawberry Perl) *

以上是我问gemini得出的解决办法,最后才build成功的。
所以,能docker还是docker吧


--【拾捌】--:

这个我是真支持,点了


--【拾玖】--:

厉害了我的佬

问题描述:

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:

  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

以上选择我承诺是永久有效的,接受社区和佬友监督:

快3级了,给佬友发个自己用AI写的小玩具~

做 AI Agent / RAG 的佬友们应该都体验过——给 LLM 接一个搜索引擎有多贵。

SerpAPI 100 次/月、Tavily 1000 次/月的免费额度,跑个 demo 都不够用,生产环境更别提了。

所以我用 Rust 撸了一个:

SoSearch — 免费、无 Key、开箱即用的 Web Search API

GitHub: GitHub - NetLops/SoSearch · GitHub

它能干什么?

一个 HTTP 请求,同时查 3 个搜索引擎,聚合去重返回标准 JSON:

curl "http://localhost:10080/search?q=rust+lang"

{ "query": "rust lang", "results": [ { "title": "Rust Programming Language", "url": "https://rust-lang.org/", "snippet": "A language empowering everyone to build reliable and efficient software.", "engine": "duckduckgo" }, { "title": "Rust (programming language) - Wikipedia", "url": "https://en.wikipedia.org/wiki/Rust_(programming_language)", "snippet": "Rust is a general-purpose programming language emphasizing performance...", "engine": "brave" } ] }

为什么造这个轮子?

痛点 SoSearch 的解决方案
SerpAPI / Tavily 要钱要 Key 完全免费,自建服务,不依赖第三方 API
Python 搜索库速度慢 Rust + Tokio 异步并发,3 个引擎同时查
用 requests 直接爬会被 ban 底层用 rquest(Rust 版 curl_cffi),TLS 指纹伪装成 Chrome 124
返回格式五花八门 统一标准化 JSON 输出,直接对接 LLM / Agent

技术栈

  • Axum — Tokio 生态 Web 框架
  • Tokio — 异步运行时,FuturesUnordered 并发调度
  • rquest — TLS 指纹模拟的 HTTP 客户端(相当于 Rust 版 curl_cffi)
  • scraper — HTML 解析 + CSS 选择器提取

支持的搜索引擎

引擎 特点
DuckDuckGo 隐私优先的标准搜索
Brave Search 独立索引,不依赖 Google/Bing
Yahoo 底层走 Bing,作为补充源

架构上是插件式的,新增引擎只需要:

  1. src/engines/ 下写一个 scraper
  2. 在 enum 里注册一下

就完事了。

快速上手

本地运行:

git clone https://github.com/netlops/SoSearch.git cd SoSearch cargo run --release # 服务默认跑在 10080 端口

Docker 一行搞定:

make docker-compose-up # 服务跑在 11380 端口

接到你的 Agent 里:

import requests resp = requests.get("http://localhost:10080/search", params={"q": "最新 AI 论文"}) results = resp.json()["results"] for r in results: print(f"[{r['engine']}] {r['title']}: {r['url']}")

项目结构

src/ ├── main.rs # Axum 路由 + 并发引擎调度 ├── models.rs # 标准化数据结构 └── engines/ ├── mod.rs # 引擎枚举 + trait dispatch ├── duckduckgo.rs # DuckDuckGo 爬虫 ├── yahoo.rs # Yahoo 爬虫 (Bing) └── brave.rs # Brave Search 爬虫

代码量很少,核心逻辑不到 300 行,Rust 新手也能轻松看懂和魔改。

内置 AI Agent Skills

项目已经配了 .gemini/.agents/ 的 agent skills,用 Gemini CLI 或类似工具可以直接问:

  • “帮我新增一个 Google 引擎” → 自动走 sosearch-engine-dev 工作流
  • “Docker 部署有报错” → 自动走 sosearch-api-ops 排障

使用场景

  • 给 LLM 接搜索:RAG、AI Agent 的 web search tool
  • 学习 Rust:真实项目,async/await + scraper + axum 全覆盖
  • 搜索结果分析:聚合多引擎结果做比较研究
  • 隐私搜索代理:自建不带追踪的搜索 API

License

CC BY-NC 4.0 — 非商用,随便用,欢迎 PR


GitHub: GitHub - NetLops/SoSearch · GitHub

觉得有用的话给个 呗,也欢迎提 issue 和 PR ~

有什么想聚合的搜索引擎可以在评论区说,我会考虑加上

网友解答:
--【壹】--:

比grok搜索强吗


--【贰】--:

先收藏吧,目前用的搜索工具还不错


--【叁】--:

厉害了大佬,感谢分享


--【肆】--:

超酷的项目,正好用得上


--【伍】--:

支持开源大佬


--【陆】--:

厉害了,大佬


--【柒】--:

感谢大佬了!


--【捌】--:

佬可以打包成 mcp 服务,接入会更方便
天下苦 exa 久矣()


--【玖】--:

谢谢分享


--【拾】--:

省钱不省token, 搜索结果喂给LLM该占多少上下文还是多少,这个没法省

但省钱是真省——SerpAPI超过100次/月就要$$了,这个自建随便造,不花一分钱(配合隔壁佬友的 【开源】💧Resin:把你的代理订阅变成专业、高性能的代理池 | 粘性路由 · 智能调度 · 十万级节点接管 · 极简部署 unlimit 直接爽歪歪)

要是你之前让Agent用browser tool去扒整个网页那种玩法,换这个确实能省不少token,毕竟一个网页几千token,这边返回就标题+摘要几十个token的事


--【拾壹】--:

感谢大佬!


--【拾贰】--:

没用API,直接爬的网页版 就跟你开浏览器搜 search.brave.com 一样,拿到HTML后css选择器抠结果出来就行了。底层用了rquest做TLS指纹伪装(curl_cffi),Brave那边以为是个正常


--【拾叁】--:

前排,厉害佬


--【拾肆】--:

会比传统搜索省token吗


--【拾伍】--:

厉害啊 佬


--【拾陆】--:

brave是如何绕过需要key的


--【拾柒】--:

Windows 10系统,尝试自己编译了一下,需要备齐以下环境:

  1. Rust (stable-x86_64-pc-windows-msvc)
  2. C/C++ 编译器: Visual Studio 2022 (包含 MSVC v14.42 和 MSBuild v17.12)
  3. Windows SDK: 10.0.22621.0 (Windows 11 SDK) (关键依赖,提供 C11 标准支持)
  4. 构建系统: CMake (由 VS 2022 自带或独立安装均可)
  5. 底层汇编器: NASM (必须在系统 PATH 环境变量中)
  6. FFI 接口生成器大脑: LLVM / Clang (必须通过 LIBCLANG_PATH 环境变量指定其 bin 目录) 如果安装LLVM到C盘就没这个问题了。
  7. 脚本环境 (BoringSSL 隐式依赖): Go 语言环境和 Perl (Strawberry Perl) *

以上是我问gemini得出的解决办法,最后才build成功的。
所以,能docker还是docker吧


--【拾捌】--:

这个我是真支持,点了


--【拾玖】--:

厉害了我的佬