package models import ( "strings" ) // botPatterns 包含常见的 bot/爬虫/蜘蛛 User-Agent 特征模式。 var botPatterns = []string{ "bot", "crawler", "spider", "scraper", "scraping", "googlebot", "bingbot", "baiduspider", "yandexbot", "duckduckbot", "slurp", "teoma", "ia_archiver", "facebookexternalhit", "facebot", "twitterbot", "whatsapp", "telegram", "slackbot", "discordbot", "linkedinbot", "pinterestbot", "tumblr", "semrushbot", "ahrefsbot", "mj12bot", "dotbot", "archive.org_bot", "serpstatbot", "dataforseo", "petalbot", "gptbot", "claudebot", "anthropic-ai", "bytespider", "applebot", "seznambot", "headless", "phantom", "selenium", "puppeteer", } // IsBot 检查给定的 User-Agent 字符串是否匹配已知的 bot 特征模式。 // 它针对常见的 bot 标识进行不区分大小写的子串匹配。 func IsBot(userAgent string) bool { if userAgent == "" { return false } ua := strings.ToLower(userAgent) for _, pattern := range botPatterns { if strings.Contains(ua, pattern) { return true } } return false }