Bagaimana cara mendapatkan nama Browser pengguna (agen pengguna) di Asp.net Core?


Jawaban:


165

Saya pikir ini mudah. Dapatkan jawabannyaRequest.Headers["User-Agent"].ToString()

Terima kasih


10
ini mengembalikan semua nama browser kepada saya
kobosh

4
@koboshRequest.Headers["User-Agent"].ToString()
Andriy

10
Hati-hati ini akan terjadi jika KeyNotFoundException jika permintaan tidak memiliki User-Agent! Pastikan untuk menggunakan .ContainsKey terlebih dahulu untuk diperiksa!
pengguna169771

12
Gores itu. ia hanya mengembalikan "" karena alasan tertentu. Hore untuk konsistensi ...
pengguna169771

38
Beberapa mungkin lebih suka Request.Headers[HeaderNames.UserAgent]menghindari string literal (mungkin tidak bekerja di Core 1.0, tidak yakin)
Will Dean

24

Bagi saya tidak Request.Headers["User-Agent"].ToString()membantu karena mengembalikan semua nama browser sehingga menemukan solusi berikut.

Ua-parse diinstal . Dalam pengontrolusing UAParser;

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

setelah menggunakan kode di atas bisa mendapatkan detail browser dari userAgent dengan menggunakan c.UserAgent.Family Anda juga bisa mendapatkan detail OS sepertic.OS.Family;


2
Persis yang saya butuhkan!
Eric

2
Itu bukan daftar semua nama browser, itulah yang diatur browser sebagai User-Agent. UAParser tahu cara mengambil semua nama itu dan menentukan browser dan OS yang sebenarnya.
John C

17

Terima kasih telah menulis singkat kecil berguna
FindOutIslamNow

Tautan itu adalah jawaban terbaik. String User-Agent adalah string yang harus Anda pecahkan dan uraikan untuk mendapatkan informasi versi. Kelas-kelas yang disediakan di sana melakukan semua kerja keras.
JustLooking

Terima kasih! untuk umpan balik Diperbarui!
Uzay

9

Saya telah mengembangkan perpustakaan untuk memperluas ASP.NET Core untuk mendukung deteksi informasi browser klien web di Wangkanai.Detection Ini akan memungkinkan Anda mengidentifikasi nama browser.

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());
        }
    }
}

Bagaimana cara kerjanya? Saya melihat Anda harus DeviceResolver.csmencari tahu apakah itu seluler, tabel, atau desktop, tetapi saya tidak dapat melihat kode serupa untuk mengekstrak detail dari header agen pengguna.
thoean

Saya telah memperbarui repo dan readme menjadi lebih matang. github.com/wangkanai/Detection
Sarin Na Wangkanai

0

Pasang ini paket .nuget

buat kelas seperti ini:

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();
        }


    }

di pengontrol Anda, Anda dapat membaca agen pengguna dari header http:

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

Kemudian Anda dapat mengurai agen pengguna:

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

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

Anda juga bisa mendapatkan tingkat kepercayaan (lebih tinggi lebih baik):

 var confidence = ua.Get(UserAgent.AGENT_NAME).GetConfidence();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.