JackZo400/dsh-netguard ↗★ 0

dsh-netguard

提供出网安全护栏与请求限制服务 适合需要严格限制出网请求、防范SSRF等安全风险的场景。

包名
dsh-netguard
兼容性
待验证
版本
0.1.0
许可证
MIT
最近更新
2026年9月27日

同名包的其他仓库

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:JackZo400/dsh-netguard

配置

- insert:
    - id: netguard
      name: dsh-netguard
      config:
        allowedProtocols: ['http:', 'https:']   # 只放这两种
        maxBytes: 8388608                       # 一次最多下多少字节(8 MiB)
        onOverflow: error                       # error = 报错;truncate = 截断到上限
        timeoutMs: 20000                        # 整条链共用的超时
        allowRedirects: true                    # 跟不跟重定向(每一跳都会重新体检)
        maxRedirects: 3
        blockedPorts: [22, 23, 25, 6379, 11211, 27017]   # 内网服务常客
        allowUrlCredentials: false              # 允不允许 URL 里带 user:pass@
        allowSingleLabel: false                 # 允不允许 http://intranet/ 这种
        userAgent: dsh-netguard/0.1.0
        enableTool: false                       # 要不要登记 fetch_url 工具
        toolMaxChars: 20000                     # 工具最多回多少字符正文

大小上限与超时的取舍(这几条是真会踩到的):

  • 超限默认报错,而不是静默截断。 因为主要调用场景是"拉图/拉音频", 截断的字节是坏数据:半张 JPEG 解不出图,可流量已经花掉、附件也存下了, 最后报的还是个更难查的错。要"只要前面一段"就显式写 onOverflow: truncate。
  • Content-Length 报得太大就直接不下载,流量一点都不花。
  • 读流是一边读一边数的,超了立刻断(reader.cancel()),不是读完再判断 —— 对面挂一个 50GB 的流,读完再判断等于自己把内存吃光。
  • 超时是整条链共用一个预算,不是每跳各给一份。否则"跳 10 次、每次卡 19 秒" 能拖出 190 秒。跳转途中花掉的时间也会算进去。