Exemplo n.º 1
0
        /// <summary>
        /// Get a value indicating whether the request is made by search engine (web crawler)
        /// </summary>
        /// <returns>Result</returns>
        public virtual bool IsSearchEngine()
        {
            if (_httpContextAccessor?.HttpContext == null)
            {
                return(false);
            }


            try
            {
                BrowscapXmlHelper browscapXmlHelper = GetBrowscapXmlHelper();

                //we cannot load parser
                if (browscapXmlHelper == null)
                {
                    return(false);
                }

                Microsoft.Extensions.Primitives.StringValues userAgent = _httpContextAccessor.HttpContext.Request.Headers[HeaderNames.UserAgent];
                return(!string.IsNullOrWhiteSpace(userAgent) && browscapXmlHelper.IsCrawler(userAgent));
            }
            catch
            {
                // ignored
            }

            return(false);
        }
Exemplo n.º 2
0
        protected virtual BrowscapXmlHelper GetBrowscapXmlHelper()
        {
            if (Singleton <BrowscapXmlHelper> .Instance != null)
            {
                return(Singleton <BrowscapXmlHelper> .Instance);
            }
            string userAgentStringPath = "~/App_Data/browscap.xml";

            //no database created
            if (string.IsNullOrEmpty(userAgentStringPath))
            {
                return(null);
            }

            //prevent multi loading data
            lock (_locker)
            {
                //data can be loaded while we waited
                if (Singleton <BrowscapXmlHelper> .Instance != null)
                {
                    return(Singleton <BrowscapXmlHelper> .Instance);
                }

                string userAgentStringsPath            = _fileProvider.MapPath(userAgentStringPath);
                string crawlerOnlyUserAgentStringsPath = _fileProvider.MapPath("~/App_Data/browscap.crawlersonly.xml");

                BrowscapXmlHelper browscapXmlHelper = new BrowscapXmlHelper(userAgentStringsPath, crawlerOnlyUserAgentStringsPath, _fileProvider);
                Singleton <BrowscapXmlHelper> .Instance = browscapXmlHelper;

                return(Singleton <BrowscapXmlHelper> .Instance);
            }
        }