Вы на правильном пути с REMOTE_ADDR
, но он может не работать, если вы заходите на сайт локально, он покажет локальный хост.
REMOTE_ADDR
- это заголовок, который содержит IP-адрес клиента, который вы должны сначала проверить.
Вам также следует проверить заголовок HTTP_X_FORWARDED
на случай, если вы посещаете прокси-сервер. Помните, что HTTP_X_FORWARDED
- это массив, который может содержать несколько значений, разделенных запятыми, в зависимости от количества прокси.
Вот небольшой фрагмент кода c #, показывающий определение ip клиента:
string clientIp = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if( !string.IsNullOrEmpty(clientIp) ) {
string[] forwardedIps = clientIp.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries );
clientIp = forwardedIps[forwardedIps.Length - 1];
} else {
clientIp = context.Request.ServerVariables["REMOTE_ADDR"];
}