C#获取用户客户端系统版本设备名称浏览器

先看效果

使用

Neget引用包UAParser

在这里插入代码片

项目的github :https://github.com/ua-parser/uap-csharp

  using UAParser;

...

  string uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3";

  // get a parser with the embedded regex patterns
var uaParser = Parser.GetDefault(); // get a parser using externally supplied yaml definitions
// var uaParser = Parser.FromYaml(yamlString); ClientInfo c = uaParser.Parse(uaString); Console.WriteLine(c.UA.Family); // => "Mobile Safari"
Console.WriteLine(c.UA.Major); // => "5"
Console.WriteLine(c.UA.Minor); // => "1" Console.WriteLine(c.OS.Family); // => "iOS"
Console.WriteLine(c.OS.Major); // => "5"
Console.WriteLine(c.OS.Minor); // => "1" Console.WriteLine(c.Device.Family); // => "iPhone"

其他方法

C# 服务端获取客户端 系统/浏览器/IP

参考:https://www.cnblogs.com/Aaxuan/p/10301926.html

        /// 获取客户端操作系统版本
/// </summary>
/// <returns></returns>
public static string GetOSName()
{
if (HttpContext.Current == null || HttpContext.Current.Request == null || HttpContext.Current.Request.UserAgent == null)
{ return "未知"; } var userAgent = HttpContext.Current.Request.UserAgent.ToLower(); if (userAgent.Contains("android"))
{ return "Android"; }
else if (userAgent.Contains("mac os x"))
{ return "ios"; }
else if (userAgent.Contains("windows phone"))
{ return "Windows Phone"; }
else if (userAgent.Contains("nt 10.0"))
{ return "Windows 10"; }
else if (userAgent.Contains("NT 6.3"))
{ return "Windows8.1"; }
else if (userAgent.Contains("NT 6.2"))
{ return "Windows8"; }
else if (userAgent.Contains("nt 6.1"))
{ return "Windows 7"; }
else if (userAgent.Contains("nt 6.0"))
{ return "Windows Vista/Server 2008"; }
else if (userAgent.Contains("nt 5.2"))
{ return "Windows Server 2003"; }
else if (userAgent.Contains("nt 5.1"))
{ return "Windows XP"; }
else if (userAgent.Contains("nt 5"))
{ return "Windows 2000"; }
else if (userAgent.Contains("nt 4"))
{ return "Windows NT4"; }
else if (userAgent.Contains("me"))
{ return "Windows Me"; }
else if (userAgent.Contains("98"))
{ return "Windows 98"; }
else if (userAgent.Contains("95"))
{ return "Windows 95"; }
else if (userAgent.Contains("mac"))
{ return "Mac"; }
else if (userAgent.Contains("unix"))
{ return "UNIX"; }
else if (userAgent.Contains("linux"))
{ return "Linux"; }
else if (userAgent.Contains("sunos"))
{ return "SunOS"; } return "未知";
} /// <summary>
/// 获取浏览器名称
/// </summary>
/// <returns></returns>
public static string GetBrowser()
{
if (HttpContext.Current == null || HttpContext.Current.Request == null || HttpContext.Current.Request.UserAgent == null)
{ return "未知"; } var userAgent = HttpContext.Current.Request.UserAgent.ToLower(); if (userAgent.Contains("opera/ucweb"))
{ return "UC Opera"; }
else if (userAgent.Contains("openwave/ ucweb"))
{ return "UCOpenwave"; }
else if (userAgent.Contains("ucweb"))
{ return "UC"; }
else if (userAgent.Contains("360se"))
{ return "360"; }
else if (userAgent.Contains("metasr"))
{ return "搜狗"; }
else if (userAgent.Contains("maxthon"))
{ return "遨游"; }
else if (userAgent.Contains("the world"))
{ return "世界之窗"; }
else if (userAgent.Contains("tencenttraveler") || userAgent.Contains("qqbrowser"))
{ return "腾讯"; }
else if (userAgent.Contains("chrome"))
{ return "Chrome"; }
else if (userAgent.Contains("safari"))
{ return "safari"; }
else if (userAgent.Contains("firefox"))
{ return "Firefox"; }
else if (userAgent.Contains("opera"))
{ return "Opera"; }
else if (userAgent.Contains("msie"))
{ return "IE"; }
else
{ return System.Web.HttpContext.Current.Request.Browser.Browser; }
} /// <summary>
/// 取得客户端IP
/// </summary>
/// <returns></returns>
public static string GetClientIp()
{
var result = "0.0.0.0"; if (HttpContext.Current == null && HttpContext.Current.Request == null)
{ return result; } result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (result == null || result == String.Empty)
{
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (result == null || result == String.Empty)
{
result = HttpContext.Current.Request.UserHostAddress;
}
if (result == null || result == String.Empty)
{
result = "0.0.0.0";
} return result;
}

C#获取用户客户端系统版本设备名称浏览器的更多相关文章

  1. 通过jquery 获取用户当前所在的城市名称和IP地址

    下面这段JS代码是通过jquery 结合新浪IP地址库和QQip地址库接口获取用户当前所在的城市(省份)名称. 用户当前IP地址等数据.其中当前IP是通过 QQip地址库接口获取,其他数据都是通过 新 ...

  2. 微信小程序—获取用户网络状态和设备的信息

    这个是一个简易教程,按照他的步骤下载好了,打开界面看到的效果是如下的:

  3. 如何获取用户的地理位置-浏览器地理位置(Geolocation)API 简介

    如何获取用户的地理位置-浏览器地理位置(Geolocation)API 简介 一.总结 一句话总结:Geolocation API(地理位置应用程序接口)提供了一个可以准确知道浏览器用户当前位置的方法 ...

  4. iOS获取用户设备崩溃日志并分析

    项目最近发布,部分用户在内侧使用,正好遇到一些问题,由于用户在其他城市,所以对于用户设备产生的崩溃日志,不好直接拿设备连接电脑. 对于这种情况,我们可以这样: 1.引导用户开启iOS设备设置-> ...

  5. iOS 获取设备信息,mac地址,IP地址,设备名称

    #import "DeviceInfoUtil.h" #import "GlobleData.h" #import "sys/utsname.h&qu ...

  6. 获取iPhone手机的UDID和设备名称.

    关于设备名称: iPhone的设备名称也可以在手机上面查看到:设置-通用-关于本机-名称(设备名称是可以自己改的) 关于UUID: 什么?用了iPhone这么久你不知道什么叫UDID! UDID 是由 ...

  7. Windows Phone 8 获取设备名称

    通过使用Microsoft.Phone.Info.DeviceStatus类,我们可以获取设备的一些信息,如设备厂商,设备名称等.通过Microsoft.Phone.Info.DeviceStatus ...

  8. Python学习---Django的request扩展[获取用户设备信息]

    关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...

  9. 获取软件的apk包名、查看手机设备名称等

    获取软件的apk包名 1.下载aapt,这里使用的是SDK自带的aapt,找到SDK路径下面的aapt.exe,本机路径:E:\downloads\android-sdk_r23.0.2-window ...

  10. 微信小程序 获取用户信息 encryptData解密 C#版本

    最近学习小程序开发,需要对encryptData解密,获取用户信息,官方源码没有C#版本,网上的资料比较杂,有的使用还有问题,下面贴一下自己亲试可以使用的一个源码 1.code 换取 session_ ...

随机推荐

  1. CSS – 管理

    前言 CSS 有好几种写法. 它们最终出来的效果是一样的, 区别只是在你如何 "写" 和 "读" 或者说开发和维护. 这已经不是如何"实现" ...

  2. t-io 学习笔记(一)

        基础介绍理解篇 序:本文也是在t-io官网学习的基础上写的理解学习笔记:1.什么是t-io? t-io是基于JVM的网络编程框架,和netty属同类,所以netty能做的t-io都能做,考虑到 ...

  3. Spring —— 依赖自动装配

    依赖自动装配   IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配 自动装配方式 按类型(常用) 按名称 按构造方法 不启用自动装配    注意: 自动装配用于引 ...

  4. JavaScript —— 简介-引入方式

    什么是JavaScript?    JavaScript的引入方式:      

  5. 以太坊Rollup方案之 arbitrum(2)

    上一期简单介绍了一下rollup的一些基本内容以及aritrun交易的执行流程,这一期将介绍一下aritrum的核心技术 -- 交互式单步证明 这一期主要涉及到的是arbitrum的验证节点 arbi ...

  6. initrd&init进程

    initrd的全名是 init ramdisk,是一个启动时存在于内存的文件系统. kernal 到 initrd的流程 在GRUB加载kernel时,kernel会先在内存中制造一个rootfs当做 ...

  7. ARM SMMU中 SteamTable的作用

    在 ARM SMMU(System Memory Management Unit)中,Stream Table 是一个非常关键的数据结构,它用于管理和映射设备的内存访问请求.它的作用主要体现在以下几个 ...

  8. 9月《中国数据库行业分析报告》已发布,47页干货带你详览 MySQL 崛起之路!

    为了帮助大家及时了解中国数据库行业发展现状.梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新<中国数据库行业分析报告>,持 ...

  9. v-model 语法糖-在父子组件传值 的简写形式

    props的变量名字 必须是  value ,this.$emit('input',数据值) 的自定义事件必须是 input : v-model 是 vue 中进行数据双向绑定的指令,在内部实际上是通 ...

  10. kotlin关键字与操作符

    硬关键字:始终解释为关键字,不能用作标识符 as - 用于类型转换 - 为导入指定一个别名 as? 用于安全类型转换 break 终止循环的执行 class 声明一个类 continue 继续最近层循 ...