05/02/2007
Código con el que podemos recuperar la ip de un usuario incluso si se encuentra detrás de un proxy.
Código:
// este código si no esta detras de un proxy
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ip extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
String ip = null; // IP del cliente
String host = null; // Host del cliente
ip = req.getRemoteAddr();
host = req.getRemoteHost();
PrintWriter out = res.getWriter();
res.setContentType("text/html");
out.println("<html><body>");
out.println("La ip del cliente es " + ip);
out.println("El host del cliente es " + host);
out.println("</body></html>");
}
}
****************************
// Si esta detras de un proxy
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// Get client's IP address
String ipAddress = req.getHeader("x-forwarded-for");
if (ipAddress == null) {
ipAddress = req.getHeader("X_FORWARDED_FOR");
if (ipAddress == null){
ipAddress = req.getRemoteAddr();
}
}
}
***************************
// Si esta detras de un proxy
if (request.getHeader("HTTP_X_FORWARDED_FOR") == null) {
String ipaddress = request.getRemoteAddr();
} else {
String ipaddress = request.getHeader("HTTP_X_FORWARDED_FOR");
}