feat(09-03): implement stealth UA pool and StealthHeaders
- Pool of 10 realistic browser User-Agents (Chrome/Firefox/Safari/Edge) - Covers Windows, macOS, Linux, iOS, Android - RandomUserAgent returns a random pool entry - StealthHeaders returns UA + Accept-Language header map
This commit is contained in:
36
pkg/recon/stealth.go
Normal file
36
pkg/recon/stealth.go
Normal file
@@ -0,0 +1,36 @@
|
||||
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",
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user