2011-01-05 15 views
21

Estoy escribiendo un código que se conecta a sitios web y comprueba algunos códigos, como un rastreador. Pero necesito conectarme a través de un proxy y cambiar la dirección IP (para que no se muestre la IP del cliente en los registros del servidor).Cómo usar un proxy HTTP en java

¿Cómo se puede hacer esto a través de java?

+23

hmm te parece que estás haciendo algo bueno. – stevebot

Respuesta

43

Puede usar las propiedades del sistema java para configurar un proxy o pasarlo como opciones de línea de comandos.

Puede encontrar algunos detalles y muestras here.

Ex: Antes de abrir la conexión

System.setProperty("http.proxyHost", "myProxyServer.com"); 
System.setProperty("http.proxyPort", "80"); 

O puede utilizar los servidores proxy de red por defecto configurados en el Sytem

System.setProperty("java.net.useSystemProxies", "true"); 

Desde Java 1.5 se puede crear una instancia de proxy y pasarlo a el método openConnection().

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080)); 
URL url = new URL("http://www.yahoo.com"); 
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy); 
uc.connect(); 

O como lisak sugirió, puede utilizar algunas bibliotecas 3 ª parte que apoya su necesidad mejor.

+1

También debe tener en cuenta que la configuración de proxy para HTTPS utiliza una propiedad ligeramente diferente, por ejemplo. System.setProperty ("https.proxyHost", "myProxyServer.com") ;. Me preguntaba por qué esto no funcionaba para mí al principio y fue porque mi código usa HTTPS. – talawahtech

+1

¿Por qué no hay constante Proxy.Type.HTTPS (segura)? – Stefan

10

O también puede usar HttpClient que se adapte mejor a sus necesidades. Consulte la documentación, es breve y muy informativo.

DefaultHttpClient httpclient = new DefaultHttpClient(); 

HttpHost proxy = new HttpHost("someproxy", 8080); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 
+0

Tutorial aquí: [enlace] (https://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/connmgmt.html#d5e475) –