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

  • 相关阅读:
    入门(一)---Java的发展史
    移除元素
    TCP的 “三次握手” 和“四次挥手”,到底是什么鬼?
    功能测试框架
    python学习笔记之--__new__方法和__init__方法
    HTTP协议状态码详解
    python学习笔记之--hasattr函数
    一文总结软件测试工程师面试前必背的面试题(持续更新中)
    MYSQL安装file /usr/share/mysql/charsets/README from install of MySQL-server-5.6.35-1.el6.x86_64 conflicts with file from package mariadb-libs-1:5.5.60-1.el7_5.x86_64报错
    centos7 安装salt起不来处理
  • 原文地址:https://www.cnblogs.com/zhuor/p/507593.html
Copyright © 2011-2022 走看看