Real‑time phishing and domain risk intelligence for security teams, SOCs, and browser clients.
SafeSurf is a phishing detection and URL intelligence engine. It fans out multiple analyzers in parallel (DNS, TLS, redirects, entropy, homoglyphs, keywords, rank, content, domain info) and returns both:
SafeSurf powers:
Parallel signal fan‑out
Rank, DNS, TLS, redirects, entropy, homoglyphs, URL structure, and keyword-based heuristics run concurrently with per‑task timing.
Deep infrastructure context
WHOIS/RDAP normalization, MX/NS health checks, IP resolution, and domain age analysis via domaininfo services.
Lexical & content analysis
URL length/depth, subdomain patterns, risky/trusted TLD sets, URL shortener detection, and page content extraction hooks.
Evidence generation
Full‑page screenshots via headless Chrome (chromedp), stored under server/tmp/screenshots for later review.
Explainable results
Responses include features, infrastructure, analysis, performance timings, and a synthesized result section with a risk score.
For a deeper walkthrough of analyzers and data flow, see docs/architecture.md and docs/data-flow.md.
High‑level:
server/) — Gin HTTP API, analyzer orchestration, rank and domain info services, screenshot worker.web/website) — Svelte + Vite frontend for manual analysis.web/chrome-extension) — Chrome MV3 helper calling the same REST API.docker/, docs/, Makefile) — Compose stacks, deployment and security guides, testing docs.Project structure:
server/ Go backend (handlers, analyzers, services)
cmd/safesurf Main entry point
internal/ Analyzer tasks, rank cache, domaininfo, screenshot
web/website SvelteKit UI
web/chrome-extension Chrome MV3 extension
docker/ Dev & prod Compose stacks
docs/ Architecture, setup, API, security, testing, etc.
See docs/architecture.md for diagrams and more detail.
The full setup guide lives in docs/setup.md. The ultra‑short version:
git clone https://github.com/abhizaik/SafeSurf.git
cd SafeSurf
# Option 1: Docker (recommended)
make dev-up
# Option 2: Local Go + Svelte
cd server && go run ./cmd/safesurf # backend on :8080
cd ../web/website && npm install && npm run dev # UI on :5173
Then:
curl "http://localhost:8080/api/v1/analyze?url=https://example.com"
Make sure server/assets/top-1m.csv contains a recent rank dataset; the backend loads it automatically on startup.
All detailed docs are under docs/:
docs/setup.mddocs/architecture.md, docs/data-flow.mddocs/configuration.mddocs/cli.mddocs/api.mddocs/deployment.mddocs/testing.md, docs/performance.mddocs/security.md, docs/maintenance.mddocs/design-decisions.md, docs/faq.md, docs/glossary.mdStart from the docs index for a curated overview.
Backend unit tests
cd server
go test ./...
Static analysis
make lint-backend # go vet ./...
Frontend checks
cd web/website
npm run check # type checks (if configured)
npm test # when tests are added
See docs/testing.md for integration tests, load testing, and coverage tips.
Bug reports and design discussions are welcome via GitHub Issues and Discussions.
feat/tls-strength-signal).make test-backend) and keep Go/Svelte code formatted.docs/ so users understand the new behavior.If SafeSurf is useful to you, please consider starring the repository, it helps others discover the project.
You share analyzer outputs or use‑cases as GitHub issues to get them fixed or added as a feature.
Thank you for helping make the web a little safer.