MVC 6, asp.net 5에서 클라이언트가 사용하는 브라우저의 이름을 얻는 방법을 알려주시겠습니까?
답변:
쉬운 일이라고 생각합니다. 답을 얻었습니다.Request.Headers["User-Agent"].ToString()
감사
Request.Headers["User-Agent"].ToString()
Request.Headers[HeaderNames.UserAgent]
문자열 리터럴을 피하는 것을 선호 할 수 있습니다 (확실하지 않은 Core 1.0에서 작동하지 않았을 수 있음)
나를 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);
위의 코드를 사용한 후 userAgent를 사용하여 브라우저 세부 정보를 얻을 c.UserAgent.Family
수 있습니다.c.OS.Family;
userAgent = Request.Headers["User-Agent"];
https://code.msdn.microsoft.com/How-to-get-OS-and-browser-c007dbf7(link not live)은 4.8로 이동합니다.
https://docs.microsoft.com/en-us/dotnet/api/system.web.httprequest.useragent?view=netframework-4.8
Wangkanai.Detection 에서 웹 클라이언트 브라우저 정보 검색을 지원하도록 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
은 모바일, 테이블 또는 데스크탑인지 알아,하지만 난 사용자 에이전트 헤더의 추출 세부 사항에 유사한 코드를 볼 수 없습니다.
이 .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();