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.