发布时间:2020-02-20 17:21:20
我们都知道,代理服务器就像是一个第三方,将我们的信息先接收进行一个中转,然后再通过它来发出信息,经过这么个步骤,我们的IP就得到的隐藏。

怎么通过代理服务器获得真实IP地址?
///取得客户端真实IP。如果有代理则取第一个非内网地址
///</summary>
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(Text.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(Text.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;
}
}
///判断是否是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);
}
上面就是飞猪ip带来的教程,如果大家需要获得真实IP,可以这么实现。
大客户
微信
置顶