dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Browser-based network diagnostics: DNS security (8 resolvers probed over RFC 8484 wire format, ECS leak + DNSSEC checks), speed/bufferbloat test, ad blocker analysis, security header scanning. No installs, no accounts — Cloudflare Workers + TypeScript + Vite.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Browser-based network diagnostics toolkit — DNS security, speed test, ad blocker analysis, and HTTP security header scanning. No installs, no accounts; every check runs client-side against Cloudflare's edge network.查看完整 README ↗
Browser-based network diagnostics toolkit — DNS security, speed test, ad blocker analysis, and HTTP security header scanning. No installs, no accounts; every check runs client-side against Cloudflare's edge network.
Live: netcheck.oilygold.xyz
speed.cloudflare.com, Netflix's fast.com, or Ookla Speedtest servers (nearest found via your city — proxies only the tiny discovery call; speed traffic goes browser → server direct)ReadableStreamwrangler devOff by default, and off on netcheck.oilygold.xyz. This is the one check that needs a server outside Cloudflare, because Workers cannot serve UDP/53.
probe-server/ is an authoritative nameserver for a zone you delegate to it. The browser resolves <label>.<your-zone>, which forces every recursive resolver in the visitor's real path to query that nameserver directly — so it sees their actual resolver IPs, and any EDNS Client Subnet forwarded. A DoH-only page can never learn this about its visitor, because it only ever talks to the one resolver it picked.
The label is the SHA-256 of a read key the visitor's tab keeps to itself. Every resolver in the path sees the label, and so do the nameserver's own logs, so observing a query must not be enough to read the result back: only the key names the session, and it never travels in a DNS query. The Worker presents the key over TLS to fetch the result.
Enable it by setting all three on the Worker:
| Variable | Where | Example |
|---|---|---|
PROBE_SERVER_URL | wrangler.toml [vars] | https://ns-probe.example.com:8443 |
PROBE_ZONE | wrangler.toml [vars] | p.example.com |
PROBE_SECRET | wrangler secret put | — |
The URL must be https:// (localhost excepted): PROBE_SECRET travels in a request header, so a plaintext URL is refused and reported as unconfigured rather than sent in the clear.
With any of them missing, the client is told the probe does not exist here: it skips the lookup entirely, and the DNS card drops both the encrypted-DNS row and the "your recursive resolver" block rather than showing a check it cannot answer.
Running the nameserver — GCP always-free VM, zone delegation, systemd unit, and the reflection-hardening notes — is documented in probe-server/README.md.
@cloudflare/vite-plugin — Workers runtime integrated directly into Vite dev/build#08090a canvas, indigo-violet accentssrc/shared/dns-wire.ts; interactive lookups via Cloudflare DNS-over-HTTPSnetcheck-site/
├── wrangler.toml # Cloudflare Worker config
├── vite.config.ts # Vite build configuration (Cloudflare plugin)
├── tsconfig.json # TypeScript configuration
├── index.html # Single-page app shell
├── probe-server/ # Authoritative nameserver for recursion-path probing
├── src/
│ ├── client/ # Frontend logic (TypeScript)
│ │ ├── app.ts # Entry point — tab routing, UI orchestration
│ │ ├── i18n.ts # Bilingual (en/zh-TW) translation strings
│ │ └── ... # Domain-specific logic (dns-check, speed-test, adblock-test, etc.)
│ ├── shared/ # Code shared between client, worker and probe server
│ │ ├── dns-wire.ts # RFC 8484 wire-format encoder/decoder
│ │ └── resolvers.ts # Public DNS resolver list
│ └── worker/ # Backend logic (TypeScript)
│ └── index.ts # Worker — API routes
└── public/
├── icon.svg, manifest.json, sw.js
└── css/styles.css # Linear design system implementation
npm install
npm run dev # Vite dev server with the Cloudflare Workers runtime
npm run typecheck # tsc --noEmit
npm test # node --test — no framework, no browser, no network
To exercise the recursion probe locally, put the three variables in a gitignored
.dev.vars and run the nameserver alongside the dev server — see
probe-server/README.md for the local port to use
(5354; mDNS holds 5353 on macOS).
npm run deploy # vite build && wrangler deploy
MIT