Summary
GoSearch v2.0.3 reports fewer false results. A site that redirects a missing user is now listed as "could not be checked" instead of a found profile, and an API 404 that doesn't mean "not found" is reported as an error instead of an empty result. Result files and outbound probes are locked down, and responses are size-capped. The release also fixes several reliability issues in the site sweep, the GitHub module and the test utility.
Fewer false results
- A site that redirects a missing user to an unexpected page (such as a bot challenge) is reported as "could not be checked" instead of a found profile. (#163, 3be33b1)
- A 404 is treated as "not found" only for APIs where it means that (GitHub users, Gravatar). Elsewhere it is reported as an error. (#170, d930e85)
Security
- Site and domain probes refuse loopback, private, link-local and other non-public addresses, so a probed site cannot redirect gosearch into your local network. The check is skipped when a proxy is configured. (#167, 4ba2e72)
- Result files are created owner-only (0600) inside an owner-only output directory (0700), since they can contain recovered passwords. (#168, b4fb0c7)
- gosearch refuses to write results through a symlink at the result file path. (#169, 5b29007)
- Response bodies are capped at 10 MiB for API and data.json responses and 5 MiB for site pages, so one oversized response cannot exhaust memory. An oversized site page is reported as "could not be checked". (#176, 74eb342)
Reliability
- When Weakpass rate-limits or denies a hash lookup (HTTP 403), gosearch now warns instead of silently treating the password as uncracked. (#171, 3ffdcc3)
- Each domain check gives up after 15 seconds across its https and http attempts, so a dead domain cannot stall the domain sweep. (#165, 2acc17c)
- A cancelled site sweep returns an error instead of looking like "no sites found". (#164, 83d1f49)
- The GitHub module keeps mutual followers found before a cancellation or failed request. (#162, ea38b4e)
- GitHub mutual-follower checks reuse one connection instead of opening a new one per follower. (#166, cac2e8b)
Test utility and CI
- The count mode no longer deletes your local data.json. (#174, da48126)
- Response bodies are closed when a gzip or deflate decoder fails. (#175, 9a9f5f2)
- The brotli dependency is upgraded to v1.2.7, which fixes a decoder panic on malformed data (GHSA-c9gr-gmg4-2vqv). (#173, d8aba8d)
- An unused dependency was removed from the test utility, and CI now checks that its go.mod is tidy. (#172, 1b0e603)
Full changelog: v2.0.2...v2.0.3