I need for specific reasons precisely detect browser name and version. Searched here and rest of the web and most answers point to Modernizr and detecting features. That's not what I want. I want to get actual name and version.
That means:
if it's Edge, I need to know it's version, not it's EdgeHTML version (optional, but it would be great if I can get that data)
if it's let's say Vivaldi, then don't tell me it's Safari or Chrome, it's Vivaldi.
if it is some browser I haven't heard of and is not listed in my list that I search for in user agent, I need to know it's name (and version).
I tried with .NET with both mixture of userAgent data and HttpContext.Current.Request.Browser class (and even taking in consideration the operating system). However, it sends ambiguous data, once in a while doesn't recognize Chrome.
Possible solution can be JS/jQuery, it doesn't have to be .NET.
EDIT: Someone said that this is possible duplication: How can you detect the version of a browser? It is not, because I tested it against Vivaldi
(user agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.189 Safari/537.36 Vivaldi/1.95.1077.60)
and it outputted Chrome 64, so it doesn't meet my criteria stated above