Asp.net Core में यूजर ब्राउजर नाम (यूजर-एजेंट) कैसे प्राप्त करें?


96

क्या आप मुझे बता सकते हैं कि MVC 6, asp.net 5 में उस क्लाइंट का नाम कैसे प्राप्त किया जाए जो क्लाइंट उपयोग कर रहा है?

जवाबों:


151

मुझे लगता है कि यह एक आसान था। में जवाब मिलाRequest.Headers["User-Agent"].ToString()

धन्यवाद


10
इसने सभी ब्राउज़रों के नाम मुझे लौटा दिए
kobosh

3
@koboshRequest.Headers["User-Agent"].ToString()
एंड्री टॉल्स्टॉय

9
यदि अनुरोध कोई उपयोगकर्ता-एजेंट नहीं है, तो KeyNotFoundException से यह परिणाम होगा! उपयोग करना सुनिश्चित करें। जांच करने के लिए पहले।
20:16 पर user169771

12
उसको खरोंचो। यह किसी कारण के बजाय सिर्फ "" लौटाता है। स्थिरता के लिए हुर्रे ...
user169771

35
कुछ Request.Headers[HeaderNames.UserAgent]स्ट्रिंग शाब्दिक से बचने के रूप में पसंद कर सकते हैं (कोर 1.0 में काम नहीं किया है, निश्चित नहीं हो सकता)
डीन

19

मेरे लिए Request.Headers["User-Agent"].ToString()सभी ब्राउज़रों के नाम को वापस लाने में मदद नहीं की इसलिए निम्न समाधान मिला।

स्थापित ua-parse । नियंत्रक मेंusing UAParser;

var userAgent = httpContext.Request.Headers["User-Agent"];
string uaString = Convert.ToString(userAgent[0]);
var uaParser = Parser.GetDefault();
ClientInfo c = uaParser.Parse(uaString);

ऊपर कोड का उपयोग करने के बाद c.UserAgent.Family आप का उपयोग कर OS विवरण प्राप्त कर सकते हैं जैसे उपयोगकर्ता द्वारा उपयोगकर्ता के विवरण से ब्राउज़र विवरण प्राप्त करने में सक्षम थाc.OS.Family;


2
वास्तव में मुझे क्या चाहिए!
एरिक

2
यह सभी ब्राउज़र नामों की सूची नहीं है, यही ब्राउज़र उपयोगकर्ता-एजेंट के रूप में सेटिंग कर रहा है। UAParser जानता है कि उन सभी नामों को कैसे लिया जाए और यह निर्धारित किया जाए कि वास्तविक ब्राउज़र और OS क्या है।
जॉन सी

15
userAgent = Request.Headers["User-Agent"]; 

https://code.msdn.microsoft.com/How-to-get-OS-OS-and-browser-c007dbf7 (लिंक लाइव नहीं) 4.8 के लिए जाएं

https://docs.microsoft.com/en-us/dotnet/api/system.web.httprequest.useragent?view=netframework-4.8


छोटे छोटे उपयोगी लिखने के लिए धन्यवाद
FindOutIslamNow

वह लिंक सबसे अच्छा जवाब है। उपयोगकर्ता-एजेंट स्ट्रिंग एक स्ट्रिंग है जिसे आपको संस्करण की जानकारी प्राप्त करने के लिए निर्णायक और पार्स करना होगा। वहां आपूर्ति की गई कक्षाएं सभी कड़ी मेहनत करती हैं।
JustLooking

धन्यवाद! प्रतिक्रिया के लिए अद्यतन!
उजय

8

मैंने वांगकानाइ पर वेब क्लाइंट ब्राउज़र की जानकारी का पता लगाने के लिए ASP.NET Core का विस्तार करने के लिए एक लाइब्रेरी विकसित की है। यह आपको ब्राउज़र का नाम पहचानने देना चाहिए।

namespace Wangkanai.Detection
{
    /// <summary>
    /// Provides the APIs for query client access device.
    /// </summary>
    public class DetectionService : IDetectionService
    {
        public HttpContext Context { get; }
        public IUserAgent UserAgent { get; }

        public DetectionService(IServiceProvider services)
        {
            if (services == null) throw new ArgumentNullException(nameof(services));

            this.Context = services.GetRequiredService<IHttpContextAccessor>().HttpContext;
            this.UserAgent = CreateUserAgent(this.Context);
        }

        private IUserAgent CreateUserAgent(HttpContext context)
        {
            if (context == null) throw new ArgumentNullException(nameof(Context)); 

            return new UserAgent(Context.Request.Headers["User-Agent"].FirstOrDefault());
        }
    }
}

यह कैसे काम करता है? मुझे DeviceResolver.csलगता है कि आपके पास यह पता लगाने के लिए है कि यह एक मोबाइल, टेबल या डेस्कटॉप है, लेकिन मैं उपयोगकर्ता एजेंट हेडर का विवरण निकालने के लिए समान कोड नहीं देख सकता।
thoean

मैंने रेपो को अपडेट किया है और रीडमी अधिक परिपक्व हो रही है। github.com/wangkanai/Detection
Sarin Na Wangkanai

0

इस .nuget पैकेज को स्थापित करें

इस तरह एक वर्ग बनाएँ:

public static class YauaaSingleton
    {
        private static UserAgentAnalyzer.UserAgentAnalyzerBuilder Builder { get; }

        private static UserAgentAnalyzer analyzer = null;

        public static UserAgentAnalyzer Analyzer
        {
            get
            {
                if (analyzer == null)
                {
                    analyzer = Builder.Build();
                }
                return analyzer;
            }
        }

        static YauaaSingleton()
        {
            Builder = UserAgentAnalyzer.NewBuilder();
            Builder.DropTests();
            Builder.DelayInitialization();
            Builder.WithCache(100);
            Builder.HideMatcherLoadStats();
            Builder.WithAllFields();
        }


    }

अपने नियंत्रक में आप http हेडर से उपयोगकर्ता एजेंट को पढ़ सकते हैं:

string userAgent = Request.Headers?.FirstOrDefault(s => s.Key.ToLower() == "user-agent").Value;

तब आप उपयोगकर्ता एजेंट को पार्स कर सकते हैं:

 var ua = YauaaSingleton.Analyzer.Parse(userAgent );

 var browserName = ua.Get(UserAgent.AGENT_NAME).GetValue();

आप विश्वास स्तर भी प्राप्त कर सकते हैं (उच्चतर बेहतर है):

 var confidence = ua.Get(UserAgent.AGENT_NAME).GetConfidence();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.