#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct AiAgent {
pub name: &'static str,
pub company: &'static str,
pub kind: &'static str,
pub token: &'static str,
}
const fn agent(name: &'static str, company: &'static str, kind: &'static str, token: &'static str) -> AiAgent {
AiAgent { name, company, kind, token }
}
pub const AI_AGENTS: &[AiAgent] = &[
agent("ChatGPT-User", "OpenAI", "live", "chatgpt-user"),
agent("OAI-SearchBot", "OpenAI", "crawl", "oai-searchbot"),
agent("GPTBot", "OpenAI", "crawl", "gptbot"),
agent("Claude-User", "Anthropic", "live", "claude-user"),
agent("Claude-SearchBot", "Anthropic", "crawl", "claude-searchbot"),
agent("ClaudeBot", "Anthropic", "crawl", "claudebot"),
agent("Claude-Web", "Anthropic", "crawl", "claude-web"),
agent("anthropic-ai", "Anthropic", "crawl", "anthropic-ai"),
agent("Perplexity-User", "Perplexity", "live", "perplexity-user"),
agent("PerplexityBot", "Perplexity", "crawl", "perplexitybot"),
agent("MistralAI-User", "Mistral", "live", "mistralai-user"),
agent("meta-externalfetcher", "Meta", "live", "meta-externalfetcher"),
agent("meta-externalagent", "Meta", "crawl", "meta-externalagent"),
agent("DuckAssistBot", "DuckDuckGo", "crawl", "duckassistbot"),
agent("Amazonbot", "Amazon", "crawl", "amazonbot"),
agent("Bytespider", "ByteDance", "crawl", "bytespider"),
agent("CCBot", "Common Crawl", "crawl", "ccbot"),
agent("cohere-ai", "Cohere", "crawl", "cohere-ai"),
agent("YouBot", "You.com", "crawl", "youbot"),
agent("Diffbot", "Diffbot", "crawl", "diffbot"),
agent("Timpibot", "Timpi", "crawl", "timpibot"),
];
pub const BOT_PATTERN: &str = r"(?i-u)bot\b|bot/|crawl|spider|slurp|scrap|fetch|headless|lighthouse|pagespeed|gtmetrix|pingdom|uptime|monitor|preview|validator|python|curl/|wget|httpclient|okhttp|java/|go-http|axios|node-fetch|undici|libwww|phantomjs|selenium|puppeteer|playwright|facebookexternalhit|embedly|whatsapp|telegram|discord|slackbot|skypeuripreview|bitlybot|feed|rss|reader|archive\.org|ia_archiver|semrush|ahrefs|mj12|dotbot|petalbot|bingpreview|baiduspider|sogou|exabot|seznam|applebot";