DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Web Fetch Lan — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
W

@local/dsh-web-fetch-lan

Web Fetch Lan

可容忍 Clash/mihomo fake-ip 响应的 web_fetch 提供程序(默认范围为 198.18.0.0/15、2001:2::/64;可通过 config.fakeIpRanges / fakeIpRanges6 配置),同时仍拒绝私有和保留地址

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:wqzhellohhwy/dsh-web-fetch-lan#95576dd84e86d8fc12339269346a6f6e4f2fe886
README兼容性版本

兼容性与来源证明

Web Fetch Lan 以 @local/dsh-web-fetch-lan 发布,当前版本为 1.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/9

版本

1.1.0stable
2026/10/9

相关插件

正在加载相关插件…

最新版
1.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
未声明
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/9
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Ab Market Researchdsh-ab-market-research一个树外 DeepSeek Harness 插件:将 trade_search 工具(多轮扩展方面的查询规划、出版商级别排序、来源多样性、JSON 快照)及其浏览器卡片集成在一个包中。Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Free Searchdsh-free-searchDeepSeek Harness 的免费网页搜索:24 个引擎(Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel 无需密钥;通过 MCP 使用 Zhihu 全局/站内搜索,以及 Perplexity/SerpBase/DeepSeek/You.com/Baidu/Kimi/Aliyun/Doubao,需密钥;OpenAI/Gemini/Claude

README

dsh-web-fetch-lan

让 DeepSeek Harness 的 web_fetch 在 Clash / mihomo 的 fake-ip 环境下正常工作:放行 fake-ip 段,同时保留对内网、回环、云元数据等地址的拦截。零依赖,无需构建。

它解决什么问题

DSH 的 web_fetch 自带 SSRF 防护:连接前先解析域名,只要解析结果里出现非公网地址就直接拒绝,报 WEB_BLOCKED_URL:

Error: URL hostname "example.com" resolves to a non-public IP address

而 Clash / mihomo 开启 TUN + enhanced-mode: fake-ip 后,所有域名都会被解析到保留段(默认 198.18.0.0/15 与 2001:2::/64)。这些地址在 ipaddr.js 眼里不是 unicast,于是所有抓取全被拦下——哪怕你本机上网完全正常。

结果就是:开着 TUN 时 web_fetch 几乎不可用,关掉 TUN 才能用。更麻烦的是 Windows 上可能同时向两个网卡查 DNS,一会儿返回 fake-ip、一会儿返回真实 IP,表现为时好时坏、难以复现。

它做了什么

提供一个替换用的 fetch provider(id = http-lan),判定规则只有一处不同:

解析结果内置 provider本插件
公网地址放行放行
fake-ip 段(可配置)拒绝放行
回环 / 私网 / 链路本地 / CGNAT / 组播 / 保留段拒绝拒绝

也就是只把「fake-ip 这一段」当作可用:它只在 TUN 内部有意义,连接会被 mihomo 按域名映射转发到你本来要访问的站点,并不会真的连到 198.18.x.x 那台主机。而 127.0.0.1、192.168.x.x、169.254.169.254、[::1] 等等依旧被挡住,本机服务、内网设备、云元数据端点不会因为装了这个插件而暴露。

顺带修掉一个实测问题:在 TUN + fake-ip 环境下,如果让 Node 按 DNS 原顺序(verbatim,IPv6 优先)连接,HTTPS 会间歇性 ECONNRESET(TCP 通、TLS 阶段被重置),连内置 provider 也躲不过。插件在 apply() 里把本进程的 DNS 结果顺序设为 ipv4first,实测连续 8/8 成功;这只是排序偏好,没有 A 记录时仍会走 AAAA。

安装

插件走 DSH 的插件管理器安装(不是 dsh plugin CLI——桌面版 profile 由 Electron 独占管理):

  1. 把本仓库放在任意目录,例如 D:\repository\dsh-web-fetch-lan;
  2. 打开 DSH 侧栏 插件 → 添加插件,填入该目录的绝对路径,安装;
  3. 若提示需要重启,就重启一次 DSH:provider 是宿主进程启动时装载的。

安装后 profile 的 package.json 会多出一条 link: 依赖与一个 bundle 条目。要卸载就回到插件页删除,内置 provider 立刻恢复。

相对路径会被安装器拒绝,填绝对路径。

配置

fake-ip 段在 loader 行的 config 里配置,默认值写在 cordis.patch.yml:

- insert:
    - id: web-fetch-lan
      name: '@local/dsh-web-fetch-lan'
      config:
        fakeIpRanges:
          - 198.18.0.0/15
        fakeIpRanges6:
          - 2001:2::/64
          - fdfe:dcba:9876::/64

在 Clash Verge 里改了 fake-ip-range / fake-ip-range6 之后,把新段补进这里,重启 DSH 即可,不用改代码。

不想改本仓库文件的话,在 profile 层覆盖(~/.dsh/profiles/<profile>/cordis.patch.yml):

- id: web-fetch-lan
  config:
    fakeIpRanges: ['198.18.0.0/15']
    fakeIpRanges6: ['2001:2::/64']

容错规则:条目逐个做 CIDR 校验,非法条目剔除后保留其余;非数组、或全部非法时回退内置默认段并在日志告警——不会因为配置写错而静默放行一切。生效的段会在启动日志里打印一行:

[web-fetch-lan] fake-ip 段 v4=198.18.0.0/15 v6=2001:2::/64,fdfe:dcba:9876::/64

cordis.patch.yml 里另有一条把 web 条的 fetchProvider 固定为 http-lan:内置的 web-fetch-http 依然注册着,不显式指定会得到 WEB_PROVIDER_AMBIGUOUS。

自检

零依赖,直接跑:

node selftest.mjs
# 或
pnpm test

覆盖配置归一与回退、地址判定、provider 装配,以及 127.0.0.1 / 169.254.169.254 / [::1] / 192.168.3.1 / file: / 带凭据 URL 仍被拒绝;末尾附带一次真实抓取(代理没开时只提示,不计入退出码)。

边界

与内置 provider 保持一致的行为与限制:

  • 仅同源重定向,最多 5 跳;跨源跳转(含 http:// → https:// 的协议升级)会拒绝并提示重试目标 URL;
  • 响应上限 2 MiB,正文截断 200,000 字符;只接受文本类 content-type;
  • 单次抓取 30 秒超时;
  • URL 不允许携带凭据,只支持 http: / https:。

注意区分两种失败:fetch failed 是网络层错误(多半是代理节点本身不通),不是被 SSRF 拦截;被拦截时的报错会明确写 not a public address / resolves to a non-public IP address。

目录结构

index.js          插件本体:地址判定、抓取实现、apply()
cordis.patch.yml  bundle patch:注册 provider + 插入插件行 + fake-ip 段配置
selftest.mjs      自检脚本(零依赖)
package.json      dsh.bundle.patch 指向 cordis.patch.yml

许可

MIT