zoukankan      html  css  js  c++  java
  • 取得访问者的真实ip地址

    //可绕过代理直接取得机器的真实ip,超级匿名代理除外 
     public static string IPAddress
      {
       get
       {
        string result = String.Empty;
     
        result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        if(result!=null&&result!= String.Empty)
        {
         //可能有代理
         if(result.IndexOf(".")==-1)    //没有“.”肯定是非IPv4格式
          result = null;
         else
         {
          if(result.IndexOf(",")!=-1)
          {
           //有“,”,估计多个代理。取第一个不是内网的IP。
           result = result.Replace(" ","").Replace("'","");
           string[] temparyip = result.Split(",;".ToCharArray());
           for(int i=0;i<temparyip.Length;i++)
           {
            if( IsIPAddress(temparyip[i])
             && temparyip[i].Substring(0,3)!="10."
             && temparyip[i].Substring(0,7)!="192.168"
             && temparyip[i].Substring(0,7)!="172.16.")
            {
             return temparyip[i];    //找到不是内网的地址
            }
           }
          }
          else if(IsIPAddress(result)) //代理即是IP格式
           return result;
          else
           result = null;    //代理中的内容 非IP,取IP
         }
     
        }
     
        string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty)?HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]:HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            
     
     
        if (null == result || result == String.Empty)
         result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        
        if (result == null || result == String.Empty)
         result = HttpContext.Current.Request.UserHostAddress;
     
        return result;
       }
      }
      #region bool IsIPAddress(str1) 判断是否是IP格式
      /**//// <summary>
      /// 判断是否是IP地址格式 0.0.0.0
      /// </summary>
      /// <param name="str1">待判断的IP地址</param>
      /// <returns>true or false</returns>
      public static bool IsIPAddress(string str1)
      {
       if(str1==null||str1==string.Empty||str1.Length<7||str1.Length>15) return false;

       string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";

       Regex regex = new Regex(regformat,RegexOptions.IgnoreCase );
       return regex.IsMatch(str1);
      }
      #endregion

  • 相关阅读:
    CSS Transform让百分比宽高布局元素水平垂直居中
    Apache配置详解
    MAMP环境配置
    ajax 设置Access-Control-Allow-Origin实现跨域访问
    Git常用命令
    ThinkPHP3.2.3批量执行sql语句(带事务)
    MySQL 百万级分页优化(Mysql千万级快速分页)
    zabbix server端与agent端源码安装 自定义监控项
    Tomcat多实例集群架构 安全优化和性能优化
    Tomcat安装应用部署及配置文件解读
  • 原文地址:https://www.cnblogs.com/zhuor/p/507593.html
Copyright © 2011-2022 走看看