zoukankan      html  css  js  c++  java
  • 穿过代理获取真正的IP

         /// <summary>
            /// 获取真ip
            /// </summary>
            /// <returns></returns>
            public string GetRealIP()
            {
                string result = String.Empty;
                result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    
                //可能有代理 
                if (!string.IsNullOrWhiteSpace(result))
                {
                    //没有"." 肯定是非IP格式
                    if (result.IndexOf(".") == -1)
                    {
                        result = null;
                    }
                    else
                    {
                        //有",",估计多个代理。取第一个不是内网的IP。
                        if (result.IndexOf(",") != -1)
                        {
                            result = result.Replace(" ", string.Empty).Replace(""", string.Empty);
                            string[] temparyip = result.Split(",;".ToCharArray());
                            if (temparyip != null && temparyip.Length > 0)
                            {
                                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];
                                    }
                                }
                            }
                        }
                        //代理即是IP格式
                        else if (IsIPAddress(result))
                        {
                            return result;
                        }
                        //代理中的内容非IP
                        else
                        {
                            result = null;
                        }
                    }
                }
    
                if (string.IsNullOrWhiteSpace(result))
                {
                    result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                }
    
                if (string.IsNullOrWhiteSpace(result))
                {
                    result = System.Web.HttpContext.Current.Request.UserHostAddress;
                }
                return result;
            }
    public bool IsIPAddress(string str) { if (string.IsNullOrWhiteSpace(str) || str.Length < 7 || str.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(str); }
  • 相关阅读:
    Windows下搭建HTK
    使用VS2012遇到的问题
    Chapter 3:Speech Production and Perception
    Chapter2:Discrete-Time Signal Processing and Short-Time Fourier Analysis
    Chapter 1:Introduction
    将SVM用于多类分类
    Kernel ridge regression(KRR)
    Sklearn学习笔记
    LDA与QDA
    〖Linux〗使用ssh登录远程主机,并在本地打开远程图形界面
  • 原文地址:https://www.cnblogs.com/plus301/p/6062487.html
Copyright © 2011-2022 走看看