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

请参阅以下代码:

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];

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

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

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

请记住“ 因为很容易伪造一个X-Forwarded-For字段,所以应该谨慎使用给定的信息。 ”