很久以前写的了,有朋友问道,就发布出来给大家看看吧
包含了一个类以及一个操作系统枚举一个浏览器枚举,其实根据UserAgent还可以获取用户的Framework版本IP等等
但是,请注意,所有的HEADER信息都是可以伪造的HttpWebRequest对象提供伪造的方法比如来源页面等等
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace CrazyCoder.Common.Web
{
/// <summary>
/// 获取用户平台信息 浏览器 操作系统 是否包含Alexa
/// Add By CrazyCoder 20070915
/// powered by http://www.crazycoder.cn
/// </summary>
public class UserAgentInfo
{
/// <summary>
/// 用户浏览器信息
/// </summary>
private UserIEType _ie;
/// <summary>
/// 浏览器版本
/// </summary>
private string _ieVersion;
private UserOSType _os;
private string _agentData;
private bool _hasAlexa;
/// <summary>
/// 用户浏览器
/// </summary>
public UserIEType IE
{
get { return _ie; }
set { _ie = value; }
}
/// <summary>
/// 用户浏览器版本
/// </summary>
public string IEVersion
{
get { return _ieVersion; }
set { _ieVersion = value; }
}
/// <summary>
/// 用户操作系统
/// </summary>
public UserOSType OS
{
get { return _os; }
set { _os = value; }
}
/// <summary>
/// 用户系统信息
/// </summary>
public string AgentData
{
get { return _agentData; }
set { _agentData = value; }
}
/// <summary>
/// 浏览器是否含有ALEXA
/// </summary>
public bool HasAlexa
{
get { return _hasAlexa; }
set { _hasAlexa = value; }
}
/// <summary>
/// 获取浏览器信息以及操作系统信息
/// </summary>
public UserAgentInfo()
{
HttpRequest Request = HttpContext.Current.Request;
_agentData = Request.UserAgent;
string userAgentInfo = _agentData.ToLower();
#region 判断浏览器
if (Request.Browser.Crawler)
{
_ie = UserIEType.SearcherBot;
}
else
{
string ie = Request.Browser.Browser;
_ieVersion = Request.Browser.Version;
if (ie == null || ie == string.Empty)
{
_ie = UserIEType.Unknown;
}
else
{
ie = ie.Trim().ToLower();
if (ie == "ie")
{
_ie = UserIEType.MicrosoftInternetExplorer;
if (userAgentInfo.IndexOf("tencenttraveler") >= 0)
_ie = UserIEType.TencentTraveler;
if (userAgentInfo.IndexOf("maxthon") >= 0 || userAgentInfo.IndexOf("myie") >= 0)
_ie = UserIEType.Maxthon;
if (userAgentInfo.IndexOf("alexa") >= 0)
_hasAlexa = true;
if (userAgentInfo.IndexOf("msn") >= 0)
_ie = UserIEType.MSN;
}
else if (ie.IndexOf("firefox") >= 0)
{
_ie = UserIEType.FireFox;
}
else if (ie.IndexOf("opera") >= 0)
{
_ie = UserIEType.Opera;
}
else if (ie.IndexOf("netscape") >= 0)
{
_ie = UserIEType.Netscape;
}
else if (ie.IndexOf("konqueror") >= 0)
{
_ie = UserIEType.Konqueror;
}
}
}
#endregion
string s = userAgentInfo;
if (s.IndexOf("nt 5.1") >= 0)
{
_os = UserOSType.WindowXP;
}
else if (s.IndexOf("nt 5.0") >= 0)
{
_os = UserOSType.Window2000;
}
else if (s.IndexOf("nt 5.2") >= 0)
{
_os = UserOSType.Window2003;
}
else if (s.IndexOf("98") >= 0)
{
_os = UserOSType.Windows98;
}
else if (s.IndexOf("nt 5.3") >= 0)
{
_os = UserOSType.Windows98;
}
else if (s.IndexOf("9x") >= 0)
{
_os = UserOSType.WindowMe;
}
else if (s.IndexOf("95") >= 0)
{
_os = UserOSType.Window95;
}
else if (s.IndexOf("windows ce") >= 0)
{
_os = UserOSType.WindowCE;
}
else if (s.IndexOf("nt 4.0") >= 0)
{
_os = UserOSType.WindowsNT;
}
else if (s.IndexOf("nt") >= 0)
{
_os = UserOSType.WindowsNT;
}
else if (s.IndexOf("Win32") >= 0)
{
_os = UserOSType.Window32;
}
else if (s.IndexOf("linux") >= 0)
{
_os = UserOSType.Linux;
}
else if (s.IndexOf("sunos") >= 0)
{
_os = UserOSType.SunOS;
}
else if (s.IndexOf("mac") >= 0)
{
_os = UserOSType.Mac;
}
else if (s.IndexOf("macintosh") >= 0)
{
_os = UserOSType.Macintosh;
}
else
{
_os = UserOSType.Unknown;
}
}
}
/// <summary>
/// 用户浏览器信息
/// Power By www.CrazyCoder.Cn
/// </summary>
public enum UserIEType
{
/// <summary>
/// Microsoft InternetExplor
/// </summary>
MicrosoftInternetExplorer = 0,
/// <summary>
/// Netscape
/// </summary>
Netscape = 1,
/// <summary>
/// 腾讯浏览器
/// </summary>
TencentTraveler = 2,
/// <summary>
/// Maxthon
/// </summary>
Maxthon = 3,
/// <summary>
/// Mozilla
/// </summary>
Mozilla = 4,
/// <summary>
/// NetCaptor
/// </summary>
NetCaptor = 5,
/// <summary>
/// MSN
/// </summary>
MSN = 6,
/// <summary>
/// Opera
/// </summary>
Opera = 7,
/// <summary>
/// Konqueror
/// </summary>
Konqueror = 8,
/// <summary>
/// Other
/// </summary>
Unknown = 9,
FireFox = 10,
/// <summary>
/// 搜索引擎
/// </summary>
SearcherBot = 11
}
/// <summary>
/// 用户操作系统类型
/// powered by CrazyCoder.Cn
/// </summary>
public enum UserOSType
{
Window32 = 0,
Window95 = 1,
Windows98 = 2,
WindowMe = 3,
WindowsNT = 4,
Window2000 = 5,
WindowXP = 6,
Window2003 = 7,
WindowCE = 8,
WindowVista = 9,
Macintosh = 10,
Linux = 11,
SunOS = 12,
Mac = 13,
Unknown = 14
}
}
最新评论