Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Pegar IP Externo do usuário acessando aplicação WEB?

$
0
0

@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

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>