@dlsilva1812 escreveu:
Estou precisando de ajuda de vocês para descobrir o IP externo do usuário que está acessando nossa aplicação web, uso JAVA + JSF.
Estava usando este métodos, mas descobri que ele retorna sempre o IP interno:
public static String retornIp() { HttpServletRequest request = (HttpServletRequest) FacesContext .getCurrentInstance().getExternalContext().getRequest(); String ip = request.getRemoteAddr(); System.out.println(ip); return ip; }
Procurei na Internet e encontrei estas 2 classes que trabalham em conjunto:
1ª)
public class PegandoIps { String ipLocal = ""; String ipExterno = ""; String linhas = null; Matcher m; String ipMaquina(){ try{ InetAddress end = InetAddress.getLocalHost(); ipLocal = end.getHostAddress().toString(); URL url = new URL(new VerificaSite().verificandoSite()); HttpURLConnection conexao = (HttpURLConnection) url.openConnection(); BufferedReader buffer = new BufferedReader(new InputStreamReader(conexao.getInputStream())); Pattern pega = Pattern.compile("[0-9]{1,3}[.-]{1}[0-9]{1,3}[.-]{1}[0-9]{1,3}[.-]{1}[0-9]{1,3}"); while((linhas = buffer.readLine()) != null){ m = pega.matcher(linhas); while(m.find()){ ipExterno = m.group(); } } buffer.close(); conexao.disconnect(); } catch(MalformedURLException e1){ System.exit(1); }catch(IOException e2){ System.exit(1); } return ipExterno.replace("-", "."); } }
2ª)
public class VerificaSite public String verificandoSite(){ String[] site = {"http://www.meuenderecoip.com", "http://meuip.datahouse.com.br", "http://www.hlera.com.br/meu_ip/", "http://www.abusar.org.br", "http://www.mostrarip.com.br"}; String siteValido = ""; for(int i = 0; i < site.length; i++){ try { URL url = new URL(site[i]); HttpURLConnection conexao = (HttpURLConnection) url.openConnection(); int codigo = conexao.getResponseCode(); if(codigo == 200){ siteValido = site[i]; } } catch (Exception e) { } } return siteValido; } }
Como o Java está fazendo a conexão com os sites, está gravando sempre o nosso IP no banco de dados.Será que alguém pode me dar uma luz?
Mensagens: 5
Participantes: 2