Foros del Web » Programación para mayores de 30 ;) » Java »

Servidor HTTP Proxy en Java

Estas en el tema de Servidor HTTP Proxy en Java en el foro de Java en Foros del Web. Hola amigos Mucho tiempo llevo ya sin postear por estos lados. Resulta que de aburrido he estado creando un pequeño y sencillo servidor proxy HTTP ...
  #1 (permalink)  
Antiguo 13/03/2012, 14:49
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
Servidor HTTP Proxy en Java

Hola amigos

Mucho tiempo llevo ya sin postear por estos lados.

Resulta que de aburrido he estado creando un pequeño y sencillo servidor proxy HTTP en Java.

He ocupado un par horas libres principalmente comprendiendo como debe trabajar este servidor para poder escribirlo de la forma más sencilla y eficiente posible.

Lo que me gustaría es que quien esté interesado pueda descargar el código fuente, probarlo puedan ir retroalimentándome con cosas que les parece que están mal o como podrían funcionar mejor.

Hasta ahora lo he probado con las cosas más básicas como peticiones http (get y post) y con peticiones https.

Lo estuve probando con un cliente de mensajería para gtalk llamado pidgim y a pesar de que se conecta dura un par de minutos antes de desconectarse.

Cabe mencionar que este proyecto es solo como pasa tiempo.

El código está estructurado en maven por lo que pueden incluirlo en cualquier IDE que lo soporte y usando java 6

Aquí les dejo la URL del proyecto.

https://sourceforge.net/p/goncafa-pr...goncafa-proxy/

Cualquier duda, consejo o comentario favor de hacerlo por esta misma vía con el mayor respeto posible, la idea es que juntos podamos mejorarlo o escribirlo como crean que debe ser mejor.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #2 (permalink)  
Antiguo 14/03/2012, 15:18
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
Respuesta: Servidor HTTP Proxy en Java

He estado haciendo varias optimizaciones en el proceso sobre todo de tratado y cierre de flujos.

Esta noche estaré actualizando el código con la nueva versión.

Recuerden que este es un proyecto hobbie open source por lo que pueden bajarlo y hacer lo que deseen con él.

Les puede ser muy útil si tienen proxys que bloquean sus salidas a algunos sitios en sus trabajos, universidades o colegios.

Podrían dejar perfectamente el proxy corriendo en un computador en su casa en el puerto 80 y configurar el proxy del browser de su trabajo, universidad, colegio para salir a través de él.

Como el puerto 80 siempre está libre no tendrán problemas y como navegaran en el fondo a través de la conexión de su casa no tendrán problemas de páginas bloqueadas.

Cualquier duda, consulta, idea, corrección, etc. pueden contarme por esta misma vía.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #3 (permalink)  
Antiguo 18/03/2012, 21:06
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
Respuesta: Servidor HTTP Proxy en Java

URL del ultimo commit:

http://sourceforge.net/p/goncafa-pro...87db0803/tree/

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #4 (permalink)  
Antiguo 23/03/2012, 15:06
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 9 meses
Puntos: 10
Respuesta: Servidor HTTP Proxy en Java

Tengo en este momento en el repositorio lo que considero es una versión bastante estable del proxy.

Incluso ya puedes mantener clientes de mensajería que usen SSL para encriptación conectados sin problemas.

Me parece que en este momento solo sufre de ciertos problemas de velocidad, ya que al parecer la diferencia entre cargar paginas en forma directa a cargarlas usando el proxy es notoriamente mas rápida.

Quisiera que la gente que esté interesada pudiese mirar el desarrollo para ver por donde se podría optimizar pasos para poder dejar el motor lo más rápido posible.

Esta es la URL del último código:

http://sourceforge.net/p/goncafa-pro...dd51cb8e/tree/

Pueden descargar el proyecto compilado y listo para probar desde esta URL:
https://sourceforge.net/projects/goncafa-proxy/files/

Solo deben descomprimir el contenido en alguna capeta y luego correrlo con start-goncafa-proxy.bat (Windows) o con start-goncafa-proxy.sh (Linux).

En caso de Linux deben darle permisos de ejecución a los 2 ficheros .sh que hay dentro.

Si se conectan a internet en forma directa pueden correrlo sin hacer nada más y solo deben apuntar su navegador al siguiente proxy:
host: localhost
port: 3128

el puerto y otras cosas pueden ser configurados en los archivos de la carpeta config.

Espero que a alguien le sirva y se interese en poder mejorar el motor.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #5 (permalink)  
Antiguo 31/10/2013, 21:26
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Servidor HTTP Proxy en Java

Tu proxy esta muy bien hecho. Me ayudo muchísimo en mi investigación. Te dejo un consejo para limitar el ancho de banda a tu gusto.

- En la clase "InputStreamConsumer" donde haces el write, "this.output.write(bytesBuffer, 0, bytesReaded);" lo remplazas por esto:

Código:
     
            int total = 0; // Total de la descarga actual
            int limitador = 130; // Limite kbps
            long ComienzoDescarga = System.currentTimeMillis();
            do {

              .......


                try {
                    this.output.write(bytesBuffer, 0, bytesLeidos);

                    total += bytesLeidos;
                    long FinDescarga = System.currentTimeMillis() - ComienzoDescarga;
                    int kbps = (int) (((1000f * total) / FinDescarga) / 1000);

                    if (kbps < Integer.MAX_VALUE) {
                        if (kbps >= limitador) {
                            try {
                                Thread.sleep((ConfiguracionPrivada.PROXY_BUFFER / limitador) * 5);
                            } catch (ArithmeticException ex) {
                                Thread.sleep(0);
                            }
                            
                        }
                    }


                    this.output.flush();

                } catch (IOException | InterruptedException e) {
                }

- Lo que hace es simple, toma la descarga inicial y cuenta el tiempo hasta que termine, luego hace un SLEEP el cual va a limitar el los kbps.

- Estoy viendo el código y esta bastante limpio, estuve mucho tiempo buscando proxys estables para hacer diferentes pruebas y el tuyo es el mas simple y mejor echo!


Saludos

Última edición por martin0290; 11/04/2017 a las 09:54

Etiquetas: jar, proxy, servidor, https
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:00.