获取浏览器信息的类

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;


namespace DL.Common
{
    public class HttpHelper
    {
        private static readonly List<string> RobotUserAgentList =
            String.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["RobotUserAgentList"])
                ? new List<string>()
                : ConfigurationManager.AppSettings["RobotUserAgentList"].Split(',').ToList();


        /// <summary>
        /// 获取客户端IP地址
        /// </summary>
        /// <returns></returns>
        public static string GetClientIPAddress()
        {
            return GetClientIPAddress(HttpContext.Current);
        }


        public static string GetClientIPAddress(HttpContext context)
        {
            var list = HttpContext.Current != null
                               ? new List<string>
                                 {
                                     context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"],
                                     context.Request.ServerVariables["REMOTE_ADDR"],
                                     context.Request.UserHostAddress,
                                     "127.0.0.1"
                                 }
                               : new List<string>
                                 {
                                     "127.0.0.1"
                                 };
            var clientIP = list.First(item => !String.IsNullOrEmpty(item) && item != "::1");


            IPAddress ip;
            if (!IPAddress.TryParse(clientIP, out ip))
            {
                clientIP = "127.0.0.1";
            }
            return clientIP;
        }


        


        public static string GetUserAgent()
        {
            return HttpContext.Current == null ? String.Empty : HttpContext.Current.Request.UserAgent;
        }


        public static string GetUserHostAddress()
        {
            return HttpContext.Current == null ? String.Empty : HttpContext.Current.Request.UserHostAddress;
        }


        public static string GetCurrentUrl()
        {
            return GetCurrentUrl(true);
        }


        public static string GetCurrentUrl(bool queryStringRequired)
        {
            string currentUrl = string.Empty;
            HttpContext context = HttpContext.Current;
            if (context != null)
            {
                //url重写的状况
                string originalUrl = context.Request.ServerVariables["HTTP_X_ORIGINAL_URL"];
                currentUrl = String.IsNullOrWhiteSpace(originalUrl)
                                 ? HttpContext.Current.Request.Url.ToString()
                                 : new Uri(new Uri(string.Format("http://{0}/", context.Request.Url.Host)), originalUrl).ToString();
            }
            //如果不需要querystring,截掉
            if (!queryStringRequired && currentUrl.IndexOf('?') > -1)
            {
                currentUrl = currentUrl.Split('?')[0];
            }
            return currentUrl;
        }


        public static string GetUrlReferrer()
        {
            return (HttpContext.Current != null && HttpContext.Current.Request.UrlReferrer != null)
                       ? HttpContext.Current.Request.UrlReferrer.ToString()
                       : String.Empty;
        }


        public static string GetBrowser()
        {
            return HttpContext.Current == null
                       ? String.Empty
                       : string.Format("{0} {1}", HttpContext.Current.Request.Browser.Browser, HttpContext.Current.Request.Browser.Version);
        }


        /// <summary>
        /// 当前访问者是否为蜘蛛程序
        /// 注:可通过手动更改浏览器user-agent设置或者url后附加isrobot=1参数来伪造当前请求为蜘蛛程序
        /// </summary>
        /// <returns></returns>
        public static bool IsRobot()
        {
            var isRobot = false;
            if (HttpContext.Current != null)
            {
                var userAgent = HttpContext.Current.Request.UserAgent;
                isRobot = (!String.IsNullOrWhiteSpace(userAgent) && RobotUserAgentList.Any(item => userAgent.IndexOf(item, StringComparison.OrdinalIgnoreCase) >= 0)) ||
                          (HttpContext.Current.Request.QueryString.AllKeys.Contains("isrobot") && HttpContext.Current.Request.QueryString["isrobot"] == "1");
            }


            return isRobot;
        }


        public static string GetServerIPAddress()
        {
            return HttpContext.Current == null ? String.Empty : HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"];
        }


        public static string GetServerPort()
        {
            return HttpContext.Current == null ? String.Empty : HttpContext.Current.Request.ServerVariables["SERVER_PORT"];
        }


        public static string GetServerIISVertion()
        {
            return HttpContext.Current == null ? String.Empty : HttpContext.Current.Request.ServerVariables["SERVER_SOFTWARE"];
        }


        public static string GetPhysicalPath()
        {
            return HttpContext.Current == null ? String.Empty : HttpContext.Current.Request.ServerVariables["APPL_PHYSICAL_PATH"];
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值