# About DuckFind <img src="duck.gif" alt="DuckFind" width="150" style="display: block; margin: 0 auto;"> The modern web, in plain HTML — for vintage browsers. [duckfind.com](https://duckfind.com) | [GitHub](https://github.com/d4rkwyng/duckfind) --- #### Overview DuckFind is a self-hosted web **search engine and article reader** for old computers. It fetches modern, TLS-only, JavaScript-heavy web pages on the server and hands the browser clean **HTML 3.2** — no CSS, no scripts — that renders on machines as old as a System 7 Mac, a Windows 3.1 box, or an Apple II with a text browser. It grew out of a simpler goal: getting a Mac OS 9 iBook onto the *modern* web. A [Crypto Ancienne](https://github.com/classilla/cryanc) proxy solved the HTTPS handshake, but modern pages were still far too heavy for a browser from the TLS-1.0 era to render. DuckFind does that work on the server instead — inspired by [FrogFind](https://frogfind.com), but an independent implementation that adds inline images, a Wayback reader, AI answers, and SSRF hardening. #### Features | Feature | What it does | |---------|--------------| | **Search** | DuckDuckGo results reformatted as plain HTML, with pagination | | **Reader** | Any page distilled to readable HTML via a Readability-style extractor — tables, multi-page stitching, challenge-page detection | | **Inline images** | Proxy downscales JPEG/PNG/WebP/AVIF → **GIF**, with grayscale and dithered 1-bit modes | | **Wayback mode** | Read pages as they were in a past year, era-consistent, original layout preserved for old pages | | **AI answers** | `!ai question` → concise plain-text answers from Claude, rendered in HTML 3.2 (optional, cost-capped) | | **Bang shortcuts** | `!w` Wikipedia, `!wb` Wayback, `!r` read, `!weather`, `!define`, `!news` | | **News portal** | RSS/Atom feeds grouped into sections, merged and date-sorted | | **Plain-text mode** | `text/plain` output for terminal browsers (MacLynx) and the oldest machines | | **Dark mode & settings** | Cookie-backed prefs — text-only, low-colour images, or a site-wide dark theme | #### How It Works ``` vintage browser ──HTTP/1.0, plain HTML── DuckFind (PHP) ──modern TLS/HTTP2── the web ``` The browser only ever speaks plain HTTP to DuckFind. DuckFind handles the TLS, JavaScript-free fetching, content extraction, image conversion, and character-set normalization, then emits minimal HTML the old browser can render. Because it fetches arbitrary user-supplied URLs, it's hardened against SSRF: it resolves DNS itself, rejects non-public IPs, pins connections to defeat DNS rebinding, and re-validates every redirect hop. #### Tech Stack - **Language**: PHP with `curl`, `dom`, `gd`, `mbstring` — **zero dependencies** (no Composer, no frameworks) - **Output**: HTML 3.2 with all non-ASCII encoded as numeric entities, for pre-Unicode browsers - **AI**: Anthropic Claude (Haiku), called over a plain `curl` POST — optional and cost-capped - **Search**: DuckDuckGo (unofficial HTML endpoint) - **Archive**: Internet Archive Wayback Machine - **Source**: [GitHub](https://github.com/d4rkwyng/duckfind) (MIT) #### Links - [Live Site](https://duckfind.com) - [GitHub Repository](https://github.com/d4rkwyng/duckfind)