C# 网站 获取客户端IP地址详细信息

IP地址详情

C# 网站 获取客户端IP地址详细信息_第1张图片

/// 
/// 获取web客户端ip地址详细信息
/// 
/// 
public static string GetClientIPKLocationKV()
{
    string ret = string.Empty;
    string LocationKV = string.Empty;
    List<string> KVs = new List<string>
    {
        "网站访问记录:"
    };
    try
            {
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri("http://freegeoip.net/json/"+GetWebClientIp()));
                webReq.Method = "GET";
                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
                ret = sr.ReadToEnd();
                sr.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
    var dict = JsonConvert.DeserializeObjectstring, string>>(ret);
    foreach (var kv in dict)
    {
        KVs.Add(kv.Key + ":" + kv.Value);
    }
    KVs.Add("访问时间:" + DateTime.Now.ToString());
    return string.Join("
"
, KVs.ToArray()); } /// /// 获取web客户端ip /// /// private static string GetWebClientIp() { string userIP = ""; string CustomerIP = ""; try { if (System.Web.HttpContext.Current == null || System.Web.HttpContext.Current.Request == null || System.Web.HttpContext.Current.Request.ServerVariables == null) { return ""; } //CDN加速后取到的IP CustomerIP = System.Web.HttpContext.Current.Request.Headers["Cdn-Src-Ip"]; if (!string.IsNullOrEmpty(CustomerIP)) { return CustomerIP; } CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (!String.IsNullOrEmpty(CustomerIP)) { return CustomerIP; } if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (CustomerIP == null) { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } } else { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } if (string.Compare(CustomerIP, "unknown", true) == 0 || String.IsNullOrEmpty(CustomerIP)) { return System.Web.HttpContext.Current.Request.UserHostAddress; } } catch { CustomerIP = "0.0.0.0"; } return CustomerIP == "::1" ? "0.0.0.0" : CustomerIP; }

Freegeoip api更新,要求用Token获取。更新方法。

public class Utills
{
    public static string GetIPLocationKV()
    {
        string ret = string.Empty;
        string LocationKV = string.Empty;
        List KVs = new List
        {
            "访问记录:"
        };
        try
        {
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri("http://www.freegeoip.net/json"));
            webReq.Method = "GET";
            webReq.ContentType = "application/x-www-form-urlencoded";
            HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
            ret = sr.ReadToEnd();
            sr.Close();
            response.Close();
        }
        catch (Exception ex)
        {
            return ex.Message;
        }

        var dict = JsonConvert.DeserializeObject>(ret);
        foreach (var kv in dict)
        {
            KVs.Add(kv.Key + ":" + kv.Value);
        }
        KVs.Add("访问时间:" + DateTime.Now.ToString());
        return string.Join("
"
, KVs.ToArray()); } public static string GetClientIPKLocationKV() { string ret = string.Empty; string LocationKV = string.Empty; List KVs = new List { "网站访问记录:" }; try { //HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri("http://freegeoip.net/json/"+GetWebClientIp())); HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(string.Format(ConfigurationManager.AppSettings["getIPstackURL"].ToString(), GetWebClientIp(), ConfigurationManager.AppSettings["ipstackkey"].ToString()))); webReq.Method = "GET"; HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default); ret = sr.ReadToEnd(); sr.Close(); response.Close(); } catch (Exception ex) { return ex.Message; } var dict = JsonConvert.DeserializeObject>(ret); foreach (var kv in dict) { KVs.Add(kv.Key + ":" + kv.Value ?? ""); } KVs.Add("访问时间:" + DateTime.Now.ToString()); return string.Join("
"
, KVs.ToArray()); } public string GetIPLocationCity() { string IP = ""; string strHostName = ""; strHostName = System.Net.Dns.GetHostName(); IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName); IPAddress[] addr = ipEntry.AddressList; IP = addr[2].ToString(); //Initializing a new xml document object to begin reading the xml file returned XmlDocument doc = new XmlDocument(); doc.Load("http://www.freegeoip.net/json"); XmlNodeList nodeLstCity = doc.GetElementsByTagName("City"); IP = "" + nodeLstCity[0].InnerText + "
"
+ IP; return IP; } /// /// 获取web客户端ip /// /// private static string GetWebClientIp() { string userIP = ""; string CustomerIP = ""; try { if (System.Web.HttpContext.Current == null || System.Web.HttpContext.Current.Request == null || System.Web.HttpContext.Current.Request.ServerVariables == null) { return ""; } //CDN加速后取到的IP CustomerIP = System.Web.HttpContext.Current.Request.Headers["Cdn-Src-Ip"]; if (!string.IsNullOrEmpty(CustomerIP)) { return CustomerIP; } CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (!String.IsNullOrEmpty(CustomerIP)) { return CustomerIP; } if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (CustomerIP == null) { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } } else { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } if (string.Compare(CustomerIP, "unknown", true) == 0 || String.IsNullOrEmpty(CustomerIP)) { return System.Web.HttpContext.Current.Request.UserHostAddress; } } catch { CustomerIP = "0.0.0.0"; } return CustomerIP == "::1" ? "0.0.0.0" : CustomerIP; } }

你可能感兴趣的:(c#-web,随笔)