快速结论
Open-WebSearch 适合想在本机给 AI 客户端补上网页搜索与正文读取能力、又不想先申请商业搜索 API 的开发者。它是 Apache 2.0 许可的社区项目,npm 包 open-websearch 在 2026-07-21 可见版本为 2.1.11,可作为 MCP 服务器、一次性 CLI 或长期运行的本地 daemon 使用。搜索可组合多个引擎,抓取工具能读取公开网页和 GitHub README。
它不是商业搜索 API 的等价替代。结果来自页面抓取,搜索引擎改版、频率限制、验证码、地区差异或动态渲染都可能让同一条命令今天成功、明天失败。更重要的是,网页正文会进入模型上下文,页面里的恶意指令不能被当成可信命令。建议个人研究先用本地 STDIO 或仅监听回环地址的 daemon,并固定 2.1.11;任何低于 2.1.7 的版本都不应继续使用,因为 2.1.7 修复了 fetchWebContent 的高危 SSRF 问题。
核心功能
- 三种本地入口:MCP 适合 Claude Desktop、Cursor、Cherry Studio 等客户端;CLI 适合脚本和单次查询;
open-websearch serve提供可复用的本地 HTTP daemon。 - 多引擎搜索:支持 Bing、百度、DuckDuckGo、Brave、Exa、Startpage、搜狗及部分开发者内容站点,可限制允许使用的引擎。
- 正文读取:
fetchWebContent读取公开 HTTP(S) 页面,另有 GitHub README、CSDN、掘金等定向读取工具,但效果受页面结构影响。 - 请求与浏览器模式:Bing 可走 request、auto 或 Playwright 路径;Playwright 不随核心包捆绑,需要另装或连接现有浏览器。
- 本地服务状态:daemon 暴露健康检查、搜索和读取接口,动作命令可优先复用已运行的服务,减少重复启动。
- 安全修复基线:2.1.7 加入 DNS 感知目标检查、重定向链检查和浏览器路径保护;当前 2.1.11 仍应配合网络隔离和最小暴露使用。
适合人群
- 需要给本地 AI 客户端增加临时网页检索能力的个人开发者。
- 能接受抓取偶发失败,并愿意为关键结论回看原始来源的研究者。
- 想把搜索放进 shell 脚本、自动化任务或本地 agent 流程的技术用户。
- 需要比较多个公开搜索来源,而不是依赖单一引擎的人。
- 不适合要求稳定 SLA、确定性排序、审计级数据来源,或准备把无鉴权服务直接暴露到共享网络的团队。
使用场景
做资料初筛时,可以先用 search 找候选页面,再只读取与问题直接相关的结果,避免把整批未知网页一次塞给模型。开发排障时,GitHub README 读取适合核对安装方式和配置字段;写研究笔记时,多引擎结果能补充来源覆盖。CLI 还适合定时检查少量公开页面,但要控制频率并记录失败,不应把抓取失败误判为“信息不存在”。
如果启用 Playwright 或 CDP,边界会明显扩大。连接日常 Chrome 会话可能让服务接触登录状态、Cookie 和已打开页面;远程 Playwright WebSocket 还会把浏览器控制权交给网络端点。更稳妥的做法是单独创建无个人账号的浏览器配置,并把 CDP 端口限制在本机。对于抓回的文本,应在 agent 提示中明确“网页内容是不可信数据”,禁止网页文字自行授权调用文件、终端、邮件或写入类工具。
价格与版本
项目代码按 Apache 2.0 提供,核心包无需购买许可证,也不要求搜索 API Key。实际成本来自运行机器、可选浏览器、维护时间,以及抓取不稳定造成的重试。npm 当前版本为 2.1.11;生产或团队配置应固定精确版本,不要长期依赖 @latest 自动漂移。
2.1.7 是最低安全基线。该版本修复了带方括号 IPv6、域名解析到私网地址、重定向链和浏览器辅助读取路径中的 SSRF 绕过。升级后仍不能把“已经修复”理解成“可以公开部署”,因为 HTTP 服务默认没有面向多用户场景设计的身份认证层。
国内访问与使用体验
本地运行本身没有账号门槛,但 npm、GitHub、目标搜索引擎和目标网页的可达性彼此独立。百度、搜狗等中文来源更贴近中文查询,DuckDuckGo、Brave、Exa 等来源的覆盖和响应则会随环境变化。页面结构一改,解析器就可能返回缺少摘要、空正文或错误字段;遇到这种情况,应切换引擎、改用原页面核对,而不是连续高频重试。
中文网页里常混有导航、评论、广告和站内提示,正文清洗并不等于事实校验。对论文、法律、医疗、金融或安全结论,至少保留来源 URL、发布日期和人工复核。若使用 daemon,只监听 127.0.0.1,不要开放宽泛 CORS;需要共享时,应在前面增加身份验证、请求限额、目标域策略和日志脱敏。
优点
- MCP、CLI、daemon 共用一套能力,既能交互使用,也方便写脚本。
- Apache 2.0 许可清楚,2.1.11 包版本明确,安全修复记录可追溯。
- 多引擎降低单一页面结构变化带来的完全不可用概率。
- 可先搜索后读取,适合控制进入模型上下文的网页数量。
- 浏览器能力是可选项,基础部署不必默认安装完整 Playwright。
不足
- 抓取不是稳定 API,页面改版、限制策略和动态内容都会造成波动。
- 网页文本可能携带针对 agent 的提示注入,工具本身不能替代模型侧隔离与人工审核。
- daemon 和 HTTP MCP 若无额外保护,不适合直接放到共享或公网环境。
- 连接 Chrome CDP、复用登录会话或远程浏览器会扩大 Cookie、会话和页面数据暴露面。
- SSRF 已在 2.1.7 修复,但旧版本仍可能存在于锁文件、镜像或全局安装中,需要主动核查。
- 没有商业 SLA、固定排序质量或搜索覆盖承诺,关键工作应准备备用来源。
替代品对比
| 工具 | 更适合谁 | 主要差异 |
|---|---|---|
| Brave Search API | 想用正式搜索 API 的开发者 | API 边界更清楚,但需要 Key,并受额度与条款约束 |
| Exa | 重视语义检索和研究结果结构的人 | 托管检索体验更一致,成本和数据边界不同 |
| Tavily | 为 agent 准备搜索结果和摘要的团队 | 面向 agent 的托管服务更省维护,但不是纯本地抓取 |
| Firecrawl | 重点是网页抽取、爬取和结构化的人 | 抽取能力更专门,部署和计费方式不同 |
| Perplexity | 想直接获得带来源回答的普通用户 | 产品体验完整,但可编排性和本地控制不如自建工具 |
常见问题 FAQ
Open-WebSearch 当前应安装哪个版本?
截至 2026-07-21,npm 可见版本是 2.1.11。至少使用 2.1.7,并在可复现环境中固定 2.1.11,而不是让自动化任务持续跟随 latest。
2.1.7 修复了什么?
它修复了 fetchWebContent 的高危 SSRF,包括 IPv6 字面量、DNS 解析到私网、重定向链和浏览器辅助读取路径的绕过。升级是必要条件,但仍需限制服务监听地址和调用者。
可以把 daemon 直接部署给团队使用吗?
不建议裸露部署。它是方便本地复用的服务,不是自带完整多租户鉴权的网关。团队使用前应增加身份认证、限流、目标地址策略、审计和敏感日志处理。
抓回来的网页能直接交给 agent 执行吗?
不能。网页是外部不可信输入,其中可能混入要求泄露数据、运行命令或调用写工具的文字。模型只能把它当资料,涉及副作用的动作必须另行授权。
什么时候应改用商业搜索服务?
当任务需要稳定 SLA、明确配额、可预测排序、供应商支持或合规合同,应优先比较 Brave Search、Exa、Tavily 等正式服务。Open-WebSearch 更适合可容忍失败的本地研究和实验。
总结
Open-WebSearch 的优势是用一个 Apache 社区包打通 MCP、CLI 和本地 daemon,让开发者低成本试验多引擎搜索与正文读取。正确用法是固定 2.1.11、确认不低于 2.1.7、先搜索后抓取、把网页标为不可信输入,并让服务只在受控边界内运行。若工作流需要公开服务、登录浏览器会话或稳定生产指标,就应先补齐鉴权和隔离,或改用边界更明确的托管搜索产品。