class ApplicationController < ActionController::Base include SeoConcern # Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has. before_action :log_browser_info # allow_browser versions: :modern allow_browser versions: :modern, patterns: [ /Mobile Safari/, /Chrome\/[\d.]+/, /Quark\/[\d.]+/, /HuaweiBrowser\/[\d.]+/, /MiuiBrowser\/[\d.]+/, /VivoBrowser\/[\d.]+/, /OppoBrowser\/[\d.]+/, /UCBrowser\/[\d.]+/, /QQBrowser\/[\d.]+/, /MicroMessenger\/[\d.]+/, /Alipay/, /BaiduBoxApp/, /baiduboxapp/i, /SogouMobile/, /Weibo/, /DingTalk/, /ToutiaoMicroApp/, /BytedanceWebview/, /ArkWeb/ ], on_failure: -> (browser) { Rails.logger.warn <<~BROWSER_INFO Browser Blocked: User Agent: #{browser.ua} Name: #{browser.name} Version: #{browser.version} Platform: #{browser.platform.name} Device: #{browser.device.name} Mobile: #{browser.mobile?} Modern: #{browser.modern?} Bot: #{browser.bot?} BROWSER_INFO } before_action :set_locale after_action :track_action def log_browser_info # 构建详细的浏览器信息 Rails.logger.info "User Agent: #{request.user_agent}" # 如果是被拦截的浏览器,记录额外信息 # unless browser_allowed? # Rails.logger.warn "Browser Blocked: #{browser_info.to_json}" # end end protected def track_action ahoy.track "Viewed Application", request.path_parameters end private def set_locale I18n.locale = params[:locale] || I18n.default_locale end end