Un escaner de proxys sencillo consiste básicamente en escanear un rango de IP's haciendo peticiones al puerto 8080 en busca de respuestas, pues ese es el puerto que usan por defecto la mayoría de los proxys...
Puesto que un proxy no siempre tiene por qué estar configurado en el puerto 8080, otro mecanismo un poco más sofisticado consistiría en ver el estado (status) de la respuesta (response) del servidor (un 305).
Algunos servidores IRC se protegen de usuarios que intentan hacer múltiples clones de forma ilimitada, ya sea para floodear, trollear, spamear, etc... simplemente usando listas negras de proxys.
El mecanismo bajo mi punto de vista es simple... bastaría con leer la cabecera "X-FORWARDED-FOR" de la petición que hace el cliente al servidor IRC. Dicha cabecera tiene el formato: cliente, proxy1, proxy2, etc... De esta forma el servidor, para detectar una conexión a través de un proxy sólo tendría que hacer:
Código:
String IP = request.getHeader("X-FORWARDED-FOR");
Si el valor devuelto es distinto de la IP del cliente o está en la lista negra de proxys, entonces el servidor dice: "HAY PROXY, Y SI NO LO TENGO EN MI LISTA NEGRA, LO ANOTO Y NIEGO LA CONEXIÓN AL CLIENTE".
Un saludo.
Marcadores