Skip to content

Releases: leolee9086/SAC_search

v0.1.1 — 修好 DuckDuckGo 引擎「成功但无结果」

Choose a tag to compare

@leolee9086 leolee9086 released this 16 Sep 03:07

修好了什么

DuckDuckGo 引擎长期「调用成功但永远没有结果」——它一直排在引擎列表里,健康统计显示正常,实际每次都返回空。

根因(实测)

同一个端点,POST 被判定为自动化,GET 正常返回。

请求 结果
GET https://html.duckduckgo.com/html/?q=… 200,含 result__a / result__snippet / result__url 各 10 条
POST https://html.duckduckgo.com/html/(补全浏览器头 + Cookie) 202 + 人机验证页
GET https://lite.duckduckgo.com/lite/?q=… 202 + 人机验证页

原实现三路探测里 HTML 主路径走的正是 POST,所以稳定拿到验证页、解析为空;而空结果又被健康统计记为「成功」,于是它一直显示正常却从不产出。

改动

  • 主路径 POST → GETq / kl / df 进查询串)
  • 验证墙判据收窄为主认结构化特征(challenge-formanomaly-modal),不再把 anomaly.js 当判据(那是表单 action,会误伤正常页)
  • 查询超 499 字符直接不发
  • 303 按正常空结果处理,不再与 403 一起当拒绝访问
  • 硬失效改为抛错而不是 return []:让框架能如实记录「这个引擎这次失败了」,不再伪装成成功
  • CaptchaError / AccessDeniedError 增加可选 suspendedTime,由引擎自己声明暂停时长;DDG 取 0,因为它的验证墙只表示本次查询未通过,不该停掉整个引擎

验证

bun test/verify-ddg-get.mjs 微舆

经代理取真实响应,用引擎自身的解析器断言:5 项全绿,解出 8 条结果,标题 / URL / 摘要均正确。

安装

pnpm add ./dsh-tool-websearch-0.1.1.tgz

v0.1.0 — 多引擎元搜索插件首发

Choose a tag to compare

@leolee9086 leolee9086 released this 12 Sep 08:38

本次发布

DSH 多引擎元搜索插件 0.1.0 首发:免 API key 直接调用约 200 个搜索引擎,并发执行、结果去重聚合、按引擎权重与时效性评分。运行时零依赖,只通过运行时的 Cordis 服务契约与 DSH 交互。

提供的能力

  • web_search_meta:多引擎元搜索,可指定 engines 子集,支持时间范围、语言、结果数与查询类型。
  • web_search_status:可用引擎清单、权重、超时、速率限制、缓存与健康状态。
  • web_search_proxy:查看或切换本地代理。
  • 浏览器结果卡:展示搜索结果,以及运行中的逐引擎进度。

这一版的取舍

  • 进度只保存在插件实例的内存里,按 sessionId + callId 隔离,不注册进度投影、也不调用 Session.append 写自定义事件,因此不会污染会话日志,也不依赖官方对 ignorable 表面的实现。仓库里的 standardprogress-events 两个分支保留了当初关于自定义会话事件的对比。
  • 插件不 import 任何 DSH 包,仓库里不出现 DSH 源码路径;搜索实现打包进 lib/search.bundle.mjs,安装方不需要 bun,也不需要任何运行时依赖。

安装

下载本页附带的 dsh-tool-websearch-0.1.0.tgz,在 DSH Web profile 目录(默认 ~/.dsh/profiles/web)执行:

pnpm add ./dsh-tool-websearch-0.1.0.tgz

然后在该 profile 的 cordis.patch.yml 中追加:

- insert:
    - id: dsh-tool-websearch
      name: dsh-tool-websearch

重载插件或重启 DSH 后刷新浏览器页面。需要 Node.js 22.19.0 或更高版本。