DSH Plugins Marketplace

DSH Plugins

Plugins

/

fakeip-compat

i

fakeip-compat

Manifest valid

Fake-IP-aware web.fetch provider for TUN (Mihomo/Clash) DNS environments plus pinned LAN CIDR access

UI (client)hasBundlePatch

fakeip-compat

standard-readme compliant License: MIT topic: dsh-plugin powered by dsh

Fake-IP-aware web.fetch provider for TUN (Mihomo/Clash) DNS environments plus pinned LAN CIDR access

Table of Contents

Background

The stock http fetch provider guards against SSRF. It rejects any hostname that resolves to a non-public address. Under a TUN proxy with Fake-IP DNS (Mihomo/Clash), every public site resolves to a fake address such as 198.18.0.11. The guard then rejects all of them, although the traffic itself works. Local LAN debugging hits the same wall from the other side.

An earlier v1 approach patched web.fetch directly and shelled out to curl/getent. That bypassed the provider registry, hid from --dump-config, allowed command injection through the model-controlled URL, and validated with one resolver while transporting through another. v2 drops all of that. It registers a real provider through ctx.web.registerFetchProvider, uses only node:dns/promises plus undici (no shell, no subprocess), throws the stock WebError codes, and transports only to DoH-validated addresses.

Install

Dependencies

Runtime dependencies install with the package (@deepseek-ai/schemastery, ipaddr.js, undici, plus the DSH peers). A TUN proxy is only needed for the Fake-IP path. The LAN path needs no proxy.

dsh plugin --profile web add github:iwinoid/fakeip-compat

Local development uses a link install instead:

dsh plugin --profile web add link:/path/to/fakeip-compat

The package has no build step, so a git install needs no allowBuilds exception.

This package only registers the provider. It never selects itself. The official multi-provider rule applies: without an explicit choice the seam reports WEB_PROVIDER_AMBIGUOUS. Point the web seam at it from the profile layer:

- id: web
  name: '@deepseek-ai/dsh-web'
  config:
    searchProvider: tavily      # keep your existing search choice, never drop it
    fetchProvider: fakeip-http

A patch replaces the whole row config, so always restate searchProvider next to fetchProvider. Or select per process:

DSH_WEB_FETCH_PROVIDER=fakeip-http

Verify after the change:

dsh --profile <name> --dump-config | grep -A8 fakeip

Usage

Configuration

KeyDefaultNotes
lanCidr192.168.0.0/16LAN allowlist. System-resolved results inside it transport pinned.
fakeV4Cidr / fakeV6Cidr198.18.0.0/16 / fdfe:dcba:9876::/48Local Fake-IP pools. Match them to the Clash Verge config.
dohEndpoints1.1.1.1/dns-query, 8.8.8.8/resolveTrusted DoH (JSON API) over direct IP-literal endpoints. First fully successful endpoint wins.
dohTimeoutMs8000Budget for one DoH lookup.
lanInsecurefalseSkip TLS check on the LAN path only. Turn it on for self-signed devices.
maxResponseBytes / maxBodyChars / timeoutMs / maxRedirects / userAgent5000000 / 100000 / 30000 / 5 / official UASame meaning as the official provider.

Settings UI

The plugin registers a fakeip-compat settings section and a browser card of the same name (lib/client.js, hand-written, no build step). After a DSH restart the card shows under Settings → Plugins → Plugin configuration. Every field in the table above edits there. Saves apply at once with no restart. Invalid input (such as a bad CIDR) blocks the save. A bad runtime edit keeps the last valid value and never breaks an in-flight fetch. Environments without a settings service (such as headless) fall back to the merged config.

API

Provider id: fakeip-http. Select it through web.fetchProvider or DSH_WEB_FETCH_PROVIDER.

The contract has two green lights and keeps the stock denial for the rest:

  1. TUN Fake-IP path. When system resolution returns a fake address, the provider re-checks the name over trusted DoH, then pins transport to the DoH-validated real address set with the official pin mechanism. No second resolution happens at transport time.
  2. LAN path. System-resolved results inside lanCidr transport pinned, with TLS checks kept by default.

Everything else keeps the official http provider refusal meaning and error codes: other private ranges, mixed answers (fake plus real together), hosts-pinned names outside the LAN allowlist, and non-allowlisted literals. A hosts entry that pins a name to LAN stays pinned. The provider never bypasses it through DoH.

Maintainers

Contributing

Bug reports and questions are welcome on the GitHub Issues page. Pull requests are accepted. The browser card is hand-written with no build step. Keep it that way.

License

MIT © iwinoid

Comments

Loading…

Similar plugins

dsh-web-fetch-fakeip

by kaminn

A fake-ip-aware ctx.web fetch provider that takes over the stock http provider id: a hostname is accepted when every DNS answer is a placeholder inside the proxy's fake-ip block (198.18.0.0/15 by defa

Tools & CapabilitiesManifest valid

★ 4

MIT

JavaScript

Oct 3, 2026

dsh plugin --profile web add dsh-web-fetch-fakeip

by Yurzi

Configurable non-public address allowlists for DeepSeek Harness web_fetch

Security & AuditManifest valid

★ 23

↓ 175/wk

MIT

TypeScript

Oct 21, 2026

dsh plugin --profile web add dsh-web-fetch-enhanced

by Zenjibad

dsh bundle: polyfill crypto.randomUUID on insecure origins so the DeepSeek Harness Web UI works over plain-HTTP LAN

Manifest valid

★ 0

MIT

JavaScript

Aug 14, 2026

dsh plugin --profile web add dsh-lan-uuid-fix

by NaivG

Let Deepseek Harness access the internet seamlessly.

Manifest valid

★ 4

↓ 174/wk

MIT

TypeScript

Oct 15, 2026

dsh plugin --profile web add dsh-network

Web search and fetch provider for DeepSeek Harness and Pi: anonymous-first routing across Exa, Tavily, Parallel, Firecrawl and TinyFish, with opt-in billing, quota preflight and bounded cancellation.

Tools & CapabilitiesManifest valid

★ 1

NOASSERTION

JavaScript

dsh plugin --profile web add dsh-web-search

IP/domain intelligence for DeepSeek Harness: ip_lookup, dns_lookup and whois_lookup tools via free no-key APIs (ipwho.is, Google DNS-over-HTTPS, RDAP).

Tools & CapabilitiesManifest valid

★ 0

dsh plugin --profile web add dsh-ip-info