Как отследить реальный IP-адрес за прокси
Как мы можем отслеживать реальный IP-адрес за прокси-сервером, используя PHP? Я имею в виду чистую реализацию PHP. Потому что они могут отключить js своих браузеров. Кстати, когда JS включен, я могу использовать геолокацию HTML 5, поэтому я не нужен IP-адрес, чтобы найти пользователя.
3 ответа
Вы можете посмотреть HTTP-заголовок X-Forwarded-For, если он отправлен, но нет гарантированного способа узнать.
Этот код PHP будет работать и полезен для прямого и обратного прокси. Для обратных прокси обратите внимание, что информация заголовка X_FORWARDED_FOR, если она вообще доступна, может быть подделана и ей вообще нельзя доверять.
if($_SERVER["HTTP_X_FORWARDED_FOR"] != ""){
$IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
$proxy = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["HTTP_X_FORWARDED_FOR"]);
}else{
$IP = $_SERVER["REMOTE_ADDR"];
$proxy = "No proxy detected";
$host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
}
Пользователь, который находится за прокси-сервером, не имеет глобально маршрутизируемого IP-адреса. Если вы хотите сохранить состояние сеанса, вам лучше иметь сгенерированный вами ключ сеанса и установить его в качестве файла cookie, либо сохранить его в URL-адресе (при таком подходе есть недостатки).
Если вы действительно хотите узнать, какой у них IP-адрес в их собственной сети, вы можете использовать javascript на странице, чтобы выяснить это, а затем отправить его обратно на свой сервер.