package recon import "math/rand" // userAgents is a curated pool of 10 realistic desktop/mobile browser // User-Agent strings used when Config.Stealth is enabled. The pool covers // Chrome/Firefox/Safari/Edge across Windows, macOS, Linux, iOS, and Android // to avoid UA-fingerprint blocking by OSINT targets. var userAgents = []string{ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.2; rv:121.0) Gecko/20100101 Firefox/121.0", "Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.61", "Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36", } // RandomUserAgent returns a pseudo-random browser User-Agent from the pool. // Used when Config.Stealth is true to rotate UA per outbound request. func RandomUserAgent() string { return userAgents[rand.Intn(len(userAgents))] } // StealthHeaders returns a minimal header map carrying a rotated User-Agent // plus a stable Accept-Language. Recon sources merge this into their // outbound requests when stealth mode is enabled. func StealthHeaders() map[string]string { return map[string]string{ "User-Agent": RandomUserAgent(), "Accept-Language": "en-US,en;q=0.9", } }