¿Cómo puedo configurar HTTPClient para autenticar contra un proxy SOCKS?

Tengo que configurar el proxy de autenticación contra un servidor proxy SOCKS.
Me enteré de este post dar las instrucciones que aparecen a trabajar con el común de servidores proxy HTTP.

        httpclient.getHostConfiguration().setProxy("proxyserver.example.com", 8080);

        HttpState state = new HttpState();
        state.setProxyCredentials(new AuthScope("proxyserver.example.com", 8080), 
           new UsernamePasswordCredentials("username", "password"));
        httpclient.setState(state);

Tendría que trabajar con CALCETINES proxy como bien o tengo que hacer algo diferente?

OriginalEl autor abahgat | 2009-09-07

5 Kommentare

  1. 3

    La Características de la página de Apache HTTPClient dice:

    Transparente conexiones a través de proxies SOCKS (versión 4 & 5) utilizando el lenguaje Java apoyo zócalo.

    Con «transparente», supongo que quiere decir que funciona sin tener que hacer nada especial. ¿Tienes un proxy SOCKS disponible en algún sitio? No puede probarlo a ver si funciona?

    No puedo instalar un proxy SOCKS en mi lugar de trabajo, pero voy a ser la prueba de que pronto en un sitio del cliente. Gracias

    OriginalEl autor Jesper

  2. 6

    Java es compatible con Calcetines de configuración de proxy a través de preferencias:

    • socksProxyHost para el nombre de host del servidor proxy SOCKS
    • socksProxyPort para el número de puerto, el valor predeterminado se 1080

    por ejemplo,

    java -DsocksProxyHost=socks.mydomain.com

    (editar) Por su ejemplo, si el servidor proxy socks se ha configurado en el modo antes descrito:

    httpclient.getHostConfiguration().setProxy("proxyserver.example.com", 8080);
    Credentials cred = new UsernamePasswordCredentials("username","password");
    httpclient.getState().setProxyCredentials(AuthScope.ANY, cred); 

    También puede utilizar esta variante (sin httpclient):

    SocketAddress addr = new
    InetSocketAddress("webcache.mydomain.com", 8080);
    Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); //Type.HTTP for HTTP

    Para completar el ejemplo anterior, ahora podemos añadir:

    URL url = new URL("http://java.sun.com/");
    URConnection conn = url.openConnection(proxy);

    HTH

    OriginalEl autor tuergeist

  3. 4

    CALCETINES no es compatible con HttpClient 3 de forma nativa. Usted puede probar los CALCETINES de apoyo en el JDK como sugeridas por otros. El efecto secundario es que toda su JVM va a ir por el mismo proxy SOCKS.

    Java 5 es compatible con nombre de Usuario/Contraseña de autenticación en los CALCETINES (tipo 2). Todo lo que tienes que hacer es configurar el autenticador como este,

    Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password.toCharArray());
        }
    });

    De nuevo, esto puede no funcionar para usted, ya que afecta a todos los autenticación en su JVM (HTTP auth, Proxy de Autenticación).

    OriginalEl autor ZZ Coder

  4. 3

    Puede proporcionar una costumbre zócalo de fábrica, que implementa el protocolo SOCKS, y registrarlo como el predeterminado para el controlador de protocolo HTTP. Esta solución tiene una limitación similar a tuergeist la respuesta de arriba ha – se aplica a nivel mundial, para cualquier conexión HTTP tendrás que establecer a través de HttpClient.

    Si usted encuentra un problema, echa un vistazo a esta correspondencia, donde Oleg sugiere el uso de HttpClient 4.0, pero también se refiere a un posible parche en HostConfiguration clase HttpClient 3.x.

    Otra posible solución, que es mi favorito personal, es para escribir un contenedor HTTP proxy el proxy socks.

    El enlace parece muerto

    OriginalEl autor Tomer

  5. 1

    Traté de

    System.setProperty("socksProxyHost", "socks.xyz.com");
    System.setProperty("socksProxyPort", "1000");

    y está funcionando bien.

    Si haces eso en Tomcat que se establece la propiedad para todo el Tomcat de la JVM. Otras aplicaciones podrían no quiero eso.

    OriginalEl autor Anshul Chaurasia

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea