Red de conocimiento informático - Material del sitio web - ¿Cómo utilizar PHP para obtener la dirección real detrás de un proxy inverso de URL?

¿Cómo utilizar PHP para obtener la dirección real detrás de un proxy inverso de URL?

El siguiente código se utiliza para obtener la dirección IP real del cliente. Como dice el refrán, la magia es tan alta como el camino. Un camuflaje más avanzado puede engañar a esta detección, pero al menos eleva mucho el umbral del camuflaje.

función getip() {

$desconocido = 'desconocido'

if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) amp; amp; $ strcasec mp( $_SERVER['HTTP_X_FORWARDED_FOR'], $desconocido) ){

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

} elseif ( isset($_SERVER[' REMOTE_ADDR'] ) amplificador; $_SERVER['REMOTE_ADDR'] amplificador; strcasecmp($_SERVER['REMOTE_ADDR'], $desconocido) {

$ip = $_SERVER['REMOTE_ADDR' ];

}

/*

Manejo de situaciones de proxy multicapa

O utilice el método normal: $ip = preg_match( "/[\ \.] {7, 15}/", $ip, $matches) ?$matches[0]: $desconocido;

*/

if (falso !== strpos ($ip, ', '))

$ip = reset(explode(',', $ip));

return $ip;

}

Se necesita una breve explicación:

1. PHP obtiene la IP del cliente sin utilizar un servidor proxy:

REMOTE_ADDR = IP del cliente

HTTP_X_FORWARDED_FOR = Sin valor o no se muestra

2. Utilice un servidor proxy transparente: p>HTTP_X_FORWARDED_FOR = IP real del cliente (a través de múltiples servidores proxy, el valor es similar: 221.5.252.160, 203.98 .182.163, 203.129.72.215)

Estos servidores proxy todavía envían la IP real del cliente al objeto de acceso, lo que no puede lograr el propósito de ocultar la verdadera identidad.

3. La situación de utilizar un servidor proxy anónimo PHP para obtener la IP del cliente: Servidor proxy anónimo

REMOTE_ADDR = Última IP del servidor proxy

HTTP_X_FORWARDED_FOR = Proxy IP del servidor (al pasar por varios servidores proxy, este valor) (al pasar por varios servidores proxy, este valor es similar a: 203.98.182.163, 203.98.182.163, 203.129.72.215)

Este caso oculta la client La IP real del cliente, pero mostrará el objeto de acceso que el cliente está utilizando un servidor proxy para acceder a ellos.

Twisted Proxy Server

REMOTE_ADDR = IP del servidor Proxy

HTTP_X_FORWARDED_FOR = IP aleatoria (al pasar varios servidores proxy, el valor será similar a: 220.4.251.159 , 203.98.182.163, 203.129.72.215)

Este escenario también indica que el cliente está usando un servidor proxy, pero está engañando al servidor proxy falsificando una IP aleatoria (220.4.251.159) en lugar de la del cliente. verdadera propiedad intelectual.

Quinto, utilice el servidor proxy de alto anonimato PHP para obtener la IP del cliente: proxy de alto anonimato (proxy Elite)

REMOTE_ADDR = IP del proxy

HTTP_X_FORWARDED_FOR = No valor o no mostrado

REMOTE_ADDR = IP proxy

HTTP_X_FORWARDED_FOR = Sin valor o no mostrado

Ya sea REMOTE_ADDR o HTTP_FORWARDED_FOR, esta información de encabezado puede existir, Ninguna Algunos de estos encabezados pueden estar disponibles porque diferentes navegadores y diferentes dispositivos de red pueden enviar diferentes encabezados IP. Por lo tanto, PHP usa $_SERVER["REMOTE_ADDR"], $_SERVER["HTTP_X_FORWARDED_FOR"] para obtener un valor que puede estar vacío o "desconocido".