# 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)