用户IP地址,使用代理还是不使用代理

时间:2011-07-13 15:02:40

标签: c# asp.net proxy ip-address

请参阅以下代码:

    private string GetUserIPAddress()
    {
        string User_IPAddress = string.Empty;
        string User_IPAddressRange = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        if (string.IsNullOrEmpty(User_IPAddressRange))//without Proxy detection
        {
            User_IPAddress = Request.ServerVariables["REMOTE_ADDR"];
            //or
            //Client_IPAddress = Request.UserHostAddress;
            //or
            //User_IPAddress = Request.ServerVariables["REMOTE_HOST"];
        }
        else////with Proxy detection
        {
            string[] splitter = { "," };
            string[] IP_Array = User_IPAddressRange.Split(splitter,
                                                          System.StringSplitOptions.None);

            int LatestItem = IP_Array.Length - 1;
            User_IPAddress = IP_Array[LatestItem - 1];
            //User_IPAddress = IP_Array[0];
        }
        return User_IPAddress;
    }

在以下情况下:
1-

User_IPAddress = Request.ServerVariables["REMOTE_ADDR"];

Client_IPAddress = Request.UserHostAddress;

User_IPAddress = Request.ServerVariables["REMOTE_HOST"];
低线或中线是其他线的替代线?
请你解释一下这些线路吗? 有什么区别 ?

2-
 User_IPAddress = IP_Array[LatestItem - 1];

User_IPAddress = IP_Array[0];

我应该使用哪一行?
你能解释一下这些线吗?

1 个答案:

答案 0 :(得分:1)

我不知道该类,但机会是Request.UserHostAddress是Request.ServerVariables [“REMOTE_ADDR”]的别名。 REMOTE_HOST也是主机名,但在大多数情况下只是ipaddress。

X-Forwarded-For的格式是client1,proxy1,proxy2。所以你想要第二个。 User_IPAddress = IP_Array [0];

请记住“Since it is easy to forge an X-Forwarded-For field the given information should be used with care.