核心用法
ddg-search 是一款命令行 DuckDuckGo 搜索抓取工具,无需 API 密钥即可获取搜索结果。支持 JSON、JSONL、CSV、Markdown、OpenSearch XML 及专为 LLM 设计的 compact 格式。
典型用法:
ddg-search "query"— 默认 JSON 输出,抓取 5 页ddg-search -f compact "query"— 最小 token 输出,直接喂给 LLMddg-search -p 0 "query"— 无限制翻页,抓取全部结果ddg-search -t w -r us-en "topic"— 限定近一周、美国英语区结果
管道友好设计: stdout 输出结果,stderr 显示进度,天然适配 Unix 管道(如 | jq -r '.items[].link' 提取链接)。
显著优点
1. 零配置即开即用:无需注册、无 API 配额限制
2. 多格式输出:尤其 compact 格式专为 LLM 上下文优化,显著降低 token 消耗
3. 隐私导向:基于 DuckDuckGo,不追踪用户
4. 灵活筛选:支持时间范围(日/周/月/年)、区域、结果数量控制
5. Node.js 生态:npm 一键安装,跨平台可用
潜在局限与风险
架构性限制:
- 网页抓取依赖:非官方 API,HTML 结构变更即可能失效
- 反爬机制:DuckDuckGo 可能触发 bot 检测,导致结果不完整;工具仅返回已抓取部分,无重试或代理支持
- 速率限制:虽有 800–2900ms 随机延迟,但大规模抓取仍可能被封禁
稳定性风险:
- 输出字段随 DuckDuckGo 页面结构调整而变化
compact格式无结构化保证,下游解析脆弱- 无内置缓存机制,重复查询效率低
合规考量:
- 需遵守 DuckDuckGo 服务条款及 robots.txt
- 商业场景大规模使用存在法律灰色地带
适合人群
- 需要快速原型或本地脚本集成搜索的开发者
- 构建隐私优先 LLM 工作流的技术用户
- 无法/不愿申请 Google/Bing API 密钥的个人项目
- 数据量小、频次低、对稳定性要求不苛刻的自动化场景
常规风险
| 类别 | 等级 | 说明 |
|------|------|------|
| 服务可用性 | 中高 | 依赖未授权抓取,随时可能失效 |
| 数据完整性 | 中 | 反爬触发时结果截断,无警告机制 |
| 合规风险 | 中 | 需自行评估 TOU 合规性 |
| 供应链安全 | 低 | npm 包来源明确,Node.js 生态相对成熟 |