use actix_web::{http::header, HttpRequest}; pub fn is_human(request: &HttpRequest) -> bool { // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent const HUMANS: &[&str] = &[ "Firefox", "Chrome", // Chrome and Chromium browsers "Opera", // Old Presto-based Opera "Mobile", // Safari "Trident", // Internet Explorer ]; request .headers() .get(header::USER_AGENT) .and_then(|header| header.to_str().ok()) .map(|ua| HUMANS.iter().any(|&human| ua.contains(human))) .unwrap_or(false) }