Página 1 de 1

Duda con código Java

NotaPublicado: 2013-01-05 18:40 @819
por BigBear
Ten el siguiente código :

Sintáxis: [ Descargar ] [ Ocultar ]
Using java Syntax Highlighting
  1. //LocateIP 0.1
  2. //Coded By Doddy H
  3.  
  4. package locateip;
  5.  
  6. import java.util.Scanner;
  7. import java.net.*;
  8. import java.io.*;
  9.  
  10. import java.util.regex.Matcher;
  11. import java.util.regex.Pattern;
  12.  
  13. public class Main {
  14.  
  15. public static void main(String[] args) throws Exception {
  16.  
  17. String ip;
  18. Scanner host = new Scanner(System.in);
  19. System.out.println("\n\n-- == LocateIP 0.1 == --\n\n");
  20. System.out.println("[+] IP : ");
  21. ip = host.nextLine();
  22.  
  23. String code;
  24.  
  25. code = toma("http://www.melissadata.com/lookups/iplocation.asp?ipaddress="+ip);
  26.  
  27. Pattern uno= null;
  28. Matcher dos= null;
  29.  
  30. uno = Pattern.compile("City</td><td align=(.*?)><b>(.*?)</b></td>");
  31. dos = uno.matcher(code);
  32.  
  33. if(!dos.find()) {
  34. System.out.println("[+] City : Not Found");
  35. } else {
  36. System.out.println("[+] City : "+dos.group(2));
  37. }
  38.  
  39. uno = Pattern.compile("Country</td><td align=(.*?)><b>(.*?)</b></td>");
  40. dos = uno.matcher(code);
  41.  
  42. if(!dos.find()) {
  43. System.out.println("[+] Country : Not Found");
  44. } else {
  45. System.out.println("[+] Country : "+dos.group(2));
  46. }
  47.  
  48. uno = Pattern.compile("State or Region</td><td align=(.*?)><b>(.*?)</b></td>");
  49. dos = uno.matcher(code);
  50.  
  51. if(!dos.find()) {
  52. System.out.println("[+] State or Region : Not Found");
  53. } else {
  54. System.out.println("[+] State or Region : "+dos.group(2));
  55. }
  56.  
  57. code = toma("http://www.ip-adress.com/reverse_ip/");
  58.  
  59. //uno = Pattern.compile("whois/(.*?)">Whois");
  60. //dos = uno.matcher(code);
  61.  
  62. System.out.println("\n\n-- == Coded By Doddy H == --");
  63.  
  64. }
  65.  
  66. private static String toma(String url) throws Exception {
  67.  
  68. String re;
  69. String total;
  70.  
  71. StringBuffer conte = new StringBuffer(40);
  72.  
  73. URL cargar = new URL(url);
  74. BufferedReader nave = new BufferedReader(
  75. new InputStreamReader(cargar.openStream()));
  76.  
  77. while ((re = nave.readLine()) != null)
  78.  conte.append(re);
  79.  
  80. nave.close();
  81.  
  82. return conte.toString();
  83.  
  84. }
  85.  
  86. }
  87.  
  88. // The End ?
Coloreado en 0.053 segundos, usando GeSHi 1.0.8.4


Y me tira el siguiente error :

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.ip-adress.com/reverse_ip/
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
        at java.net.URL.openStream(URL.java:1010)
        at locateip.Main.toma(Main.java:74)
        at locateip.Main.main(Main.java:57)
Java Result: 1
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿ Alguien me podría indicar cómo arreglo el código ?

Re: Duda con código Java

NotaPublicado: 2013-01-05 18:54 @829
por explorer
El error 403 es la respuesta HTTP de tu intento de solicitud de obtención del recurso.

Y ese código significa:

La solicitud fue legal, pero el servidor se rehúsa a responderla.

Re: Duda con código Java

NotaPublicado: 2013-01-05 19:37 @859
por BigBear
Pero con Perl, Python y Ruby no tengo problemas con esa página.

¿ Qué puedo hacer en Java ?

Re: Duda con código Java

NotaPublicado: 2013-01-05 19:41 @862
por explorer
Seguramente el servidor te estará bloqueando el acceso a la página al examinar la cadena que representa al cliente que hace la petición HTTP. Al ver que se trata de una biblioteca Java, impide el acceso. Lo mismo pasa en muchos sitios, cuando intentas acceder con la biblioteca LWP de Perl.

La solución es la de siempre: falsear la cadena haciendo como que se está conectando el Mozilla Firefox o el Internet Explorer.

Re: Duda con código Java

NotaPublicado: 2013-01-05 19:57 @873
por BigBear
Parece que lo solucioné, acabo de encontrar este código que sí funciona.

Sintáxis: [ Descargar ] [ Ocultar ]
Using java Syntax Highlighting
  1.                URL url = new URL("http://www.ip-adress.com/reverse_ip/");
  2.        URLConnection hc = url.openConnection();
  3.         hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
  4.  
  5.         System.out.println(hc.getInputStream());
  6.  
  7.  
  8.         BufferedReader nave = new BufferedReader(
  9. new InputStreamReader(hc.getInputStream()));
  10.  
  11.  
  12.         while ((re = nave.readLine()) != null)
  13.         System.out.println(re);
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4

Re: Duda con código Java

NotaPublicado: 2013-01-05 22:26 @976
por explorer
Funciona porque hace lo que te dije antes: modifica la cadena que se envía al servidor que identifica al agente (User-Agent). Algo que se hace en muchos códigos que hay por estos foros, incluidos muchos tuyos ;)

Re: Duda con código Java

NotaPublicado: 2013-01-05 23:07 @005
por BigBear
Yo sí seguí tu consejo, de hecho encontré el código buscando en Google "user agent java get content".
Parte de mí sabía que el error venía del User agent, pero como no entiendo casi nada de Java, no sabía por dónde empezar :D