`navigate()` (list/detail/pagination) and the session probe called `Browser::new_page()` without the SSRF check that already guards the chapter-content path, so a hostile or compromised scraped source could serve `<a href="http://169.254.169.254/…">` / `http://postgres:5432/` in a listing and use the in-container Chromium as a read oracle. Add `guard_navigate_url` (reusing `ensure_public_target`) at the top of `navigate`, before rate-limiting or opening a page, and apply the same check to `fetch_probe_html`. Covers base URL, pagination, and detail links. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>