Подтвердить что ты не робот

Получить IP-адрес пользователя

Как получить текущий IP-адрес посетителей?

4b9b3361

Ответ 1

Изменить: также нашел интересный вопрос о http-заголовках http здесь.

Edit2: Как упоминалось в комментариях и в ссылке, приведенной выше, заголовок HTTP_X_FORWARDED_FOR может содержать несколько IP-адресов, разделенных запятой. Я не сталкивался с этой ситуацией, но предполагаю, что некоторые поправки к моему ответу требуются.

Я использую этот код для получения IP-адреса (он возвращает значение IPAddress.None, если по какой-либо причине происходит сбой):

    /// <summary>
    /// Gets the IP address of the request.
    /// <remarks>
    /// This method is more useful than built in because in some cases it may show real user IP address even under proxy.
    /// <summary>
    /// Gets the IP address of the request.
    /// <remarks>
    /// This method is more useful than built in because in some cases it may show real user IP address even under proxy.
    /// The <see cref="System.Net.IPAddress.None" /> value will be returned if getting is failed.
    /// </remarks>
    /// </summary>
    /// <param name="request">The HTTP request object.</param>
    /// <returns></returns>
    public static IPAddress GetIp(this HttpRequest request)
    {
        string ipString;
        if (string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
        {
            ipString = request.ServerVariables["REMOTE_ADDR"];
        }
        else
        {
            ipString = request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
                .FirstOrDefault();
        }

        IPAddress result;
        if (!IPAddress.TryParse(ipString, out result))
        {
            result = IPAddress.None;
        }

        return result;
    }

Ответ 2

HttpContext.Current.Request.UserHostAddress;

или

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

или

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

Ответ 3

Request.UserHostAddress

Ответ 4

public String GetIP()
{
    string ipString;
    if (string.IsNullOrEmpty(Request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
    {
        ipString = Request.ServerVariables["REMOTE_ADDR"];
    }
    else
    {
        ipString = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
    }
    return ipString;
}

Сначала, пытаясь выяснить IP-адрес прокси, если его null, мы можем получить эту систему IP

Ответ 5

Попробуйте это, чтобы получить внешний IP-адрес пользователя.

public static string getExternalIp()
    {
        try
        {

            string externalIP;
            externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/");
            externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
                         .Matches(externalIP)[0].ToString();
            return externalIP;
        }
        catch { return null; }
    }