Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasZona WindowsEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Navegadores Web - SRWare IronProxys Caché - Smart Cache"

Proxys Caché - Polipo




Proxys Caché - Polipo




Copyright

Copyright © José Luis Lara Carrascal  2008-2011   http://manualinux.freehostia.com



Sumario

Introducción
Características
Preliminares
Instalación
Configurar el inicio de Polipo
Configurar los clientes
Uso de Polipo con Tor y Privoxy
Iniciamos Polipo
Controlar el tamaño de la caché de Polipo
Consideraciones finales
Enlaces




Introducción  

Si no fuera por este programa, mi navegación por internet con mi conexión de 56k sería insufrible, el hecho de poder almacenar en un directorio caché en el disco todas las páginas que voy visualizando y la gestión eficaz que se hace de las peticiones de los navegadores clientes (mucho más lentos para gestionar esta tarea) hacen de este programa, cuyo nombre es Polipo, una herramienta indispensable para los usuarios de conexiones a internet por módem tradicional, facilitando considerablemente la navegación y sobre todo, aprovechando las capacidades enormes de los discos duros actuales, poder trabajar con cachés de 1, 2 o 3 GB según las necesidades e intensidad del usuario en su navegación diaria.

Basado en WWWOFFLE, mejora los defectos que este último tiene en cuanto a la posibilidad (algo fundamental para una conexión de 56k) de cerrar la carga y almacenamiento de la página al mismo tiempo que el navegador cliente cierra, detiene o cancela la carga de una página. WWWOFFLE en cambio, no dispone de esta característica y hace caso omiso descargando la página en su totalidad, aunque el navegador cliente haya cancelado la petición de la misma, lo que supone una degradación considerable de la navegación con WWWOFFLE.

Espero que este documento sirva de ayuda a los usuarios de GNU/Linux de conexiones de 56k y puedan mejorar de forma considerable su navegación por internet, les garantizo como usuario que lleva bastante tiempo utilizándolo, que este programa no les defraudará.



Características  

* Usa pipelining HTTP/1.1 si comprueba que el servidor remoto lo soporta, si las peticiones entrantes son canalizadas o entran en múltiples conexiones (esto es mejor que el uso simple de conexiones persistentes, cómo por ejemplo, hace Squid).
* Almacena el segmento inicial de una instancia si la descarga se ha interrumpido, y si es necesario, lo completa más tarde usando el rango de peticiones.
* Actualiza las peticiones de los clientes a HTTP/1.1, aún en el caso de que éste las haya hecho cómo HTTP/1.0 y adapta las respuestas del servidor a las capacidades del cliente (esto implica una conversión desde/a HTTP/1.1)
* Soporte completo de IPv6 (salvo para direcciones locales)
* Uso opcional de la técnica Poor Man's Multiplexing para una reducción fuerte de la latencia
* Puede utilizarse para navegación anónima de forma directa con Tor.



Preliminares  

1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH


Abrimos una ventana de terminal y ejecutamos el siguiente comando,

[jose@Fedora-16 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin

Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente,

#!/bin/sh

export PATH=/usr/local/bin:$PATH

Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.

$ su
# install -m755 variables.sh /etc/profile.d

Tenemos que cerrar el emulador de terminal y volverlo a abrir para que la variable de entorno aplicada sea efectiva. Es conveniente guardar una copia de este script para posteriores instalaciones de nuestro sistema, teniendo en cuenta que es el que se va a utilizar a partir de ahora en todos los manuales de esta web, para establecer variables de entorno globales, excepto en aquellas que sólo afectan al usuario, en las que se utilizará el archivo de configuración personal, ~/.bashrc.

La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.

2) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr

Aún en el caso de que la versión a compilar la vayamos a instalar en el mismo directorio que la que proporciona la distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Polipo para la elaboración de este documento.

* GCC - (4.6.2)
* Make - (3.82)



Descarga

polipo-1.0.4.1.tar.gz

Extracción

$ tar zxvf polipo-1.0.4.1.tar.gz
$ cd polipo-1.0.4.1

Optimizaciones

$ sed -i "s:-Os:-O3 -march=athlon64 -mtune=athlon64:" Makefile

Donde pone athlon64 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2.x e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Valores CPU
generic Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.2.x.
i386 Intel i386.
i486 Intel i486.
i586, pentium Intel Pentium sin soporte de instrucciones MMX.
pentium-mmx Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX.
pentiumpro Intel PentiumPro.
i686 Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son.
pentium2 Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX.
pentium3, pentium3m Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE.
pentium-m Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino.
pentium4, pentium4m Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2.
prescott Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3.
nocona Versión mejorada de Intel Pentium4 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2 y SSE3.
core2 Intel Core2 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está disponible a partir de GCC 4.3.x.
corei7 Intel Core i7 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible a partir de GCC 4.6.x.
corei7-avx Intel Core i7 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible a partir de GCC 4.6.x.
atom Intel Atom con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está disponible a partir de GCC 4.5.x.
k6 AMD K6 con soporte de instrucciones MMX.
k6-2, k6-3 Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!.
athlon, athlon-tbird AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch.
athlon4, athlon-xp, athlon-mp Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE.
k8, opteron, athlon64, athlon-fx Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit).
k8-sse3, opteron-sse3, athlon64-sse3 Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3.x.
amdfam10, barcelona Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3.x.
btver1 AMD Bobcat (family 14). Esta opción está disponible a partir de GCC 4.6.x.
winchip-c6 IDT Winchip C6, que equivale a un i486 con soporte de instrucciones MMX.
winchip2 IDT Winchip2, que equivale a un i486 con soporte de instrucciones MMX y 3DNow!.
c3 Via C3 con soporte de instrucciones MMX y 3DNow!.
c3-2 Via C3-2 con soporte de instrucciones MMX y SSE.
geode AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3.x.
native Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2.x.

Compilación

$ make

Parámetros de compilación opcionales

-j2 : Si tenemos un procesador de doble núcleo (dual-core), y el kernel está optimizado para el mismo y es SMP, con este parámetro aumentaremos el número de procesos de compilación simultáneos a un nivel de 2 y aceleraremos el tiempo de compilación del programa de forma considerable.
-j4 : Lo mismo que arriba pero con procesadores de 4 núcleos (quad-core).

Instalación como root  Bloc de Notas

$ su
# make install
# mkdir -p /var/cache/polipo
# mkdir -p /etc/polipo
# install -m644 *.sample /etc/polipo
# mv /etc/polipo/config.sample /etc/polipo/config
# mv /etc/polipo/forbidden.sample /etc/polipo/forbidden

Los valores por defecto que utiliza Polipo son suficientes para garantizar un funcionamiento eficaz del proxy, la edición del archivo de configuración es para casos puntuales, como el uso con el programa de navegación anónima: Tor, o la utilización de un directorio de caché diferente al predeterminado. En mi caso personal y como explico más adelante, la ejecución de Polipo se hace directamente desde el script de ejecución de PPPD con lo que este se ejecuta mediante la orden del root cuando me conecto a internet.

La edición del archivo de configuración del sistema o el personal irá en función del usuario que lance el programa, en mi caso es el root. Polipo tiene una interfaz web que permite configurar en vivo las opciones del mismo, pero esto lo explico más adelante. El archivo forbidden contiene la lista de direcciones que no queremos que cachee Polipo, su edición es muy fácil.

Crear el directorio de configuración personal (opcional)

$ mkdir -p ~/.polipo
$ cp -v /etc/polipo/* ~/.polipo

Directorio de configuración personal (opcional)

~/.polipo Es el directorio de configuración personal de Polipo en nuestro home.

Directorio de la caché

/var/cache/polipo Es el directorio por defecto de la caché de Polipo.

Desinstalación como root

1) MODO TRADICIONAL

Este programa no tiene soporte para desinstalación con el comando 'make uninstall'

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenermos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

polipo-1.0.4.1-scripts.tar.gz

$ su
# tar zxvf polipo-1.0.4.1-scripts.tar.gz
# cd polipo-1.0.4.1-scripts
# ./Desinstalar_polipo-1.0.4.1

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf polipo-1.0.4.1-scripts.tar.gz
# cd polipo-1.0.4.1-scripts
# ./Respaldar_polipo-1.0.4.1

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_polipo-1.0.4.1



Configurar el inicio de Polipo  

a) Iniciarlo al conectarnos a internet mediante módem de 56K (ejemplo con Mandriva)

Editamos el archivo /etc/ppp/ip-up.local y añadimos lo que está en rojo,

sh /etc/firestarter/firestarter.sh start
/usr/local/bin/wwwoffle -online -c /etc/wwwoffle/wwwoffle.conf &
/usr/local/bin/polipo &



b) Iniciarlo en el arranque del sistema (ejemplo con Mandriva y compatibles)

Editamos el archivo /etc/rc.d/rc.local y añadimos lo que está en rojo,

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.



touch /var/lock/subsys/local
echo 1024 > /proc/sys/dev/rtc/max-user-freq
hdparm -M 192 /dev/hda
#/opt/e17/sbin/entranced
#slim -d
/usr/local/bin/polipo &


También lo podemos iniciar desde terminal: polipo & e incluso añadirlo a los scripts de inicio de los administradores de ventanas, ejemplos hay de sobra en los manuales de éstos.



Configurar los clientes  

Polipo utiliza por defecto la dirección localhost:8123 para la conexión al mismo, tendremos que configurar los navegadores y los gestores de descargas como wget para poder usarlos con Polipo. Recordar que solo hay que configurar la casilla HTTP Proxy

a) Mozilla Firefox

Aunque lo podemos configurar desde las preferencias del navegador, lo mejor es instalar la extensión Multiproxy Switch, lo que nos permitirá desactivar el proxy en conexiones de acceso mediante contraseña (por ejemplo, los foros) en el caso de que dé problemas. Para añadirlo sólo tendremos que seleccionar Administrar Proxies >> Agregar y dejarlo como se muestra en la captura de pantalla siguiente:

Captura - Multiproxy Switch


b) SeaMonkey

En SeaMonkey utilizaremos la extensión MM3-ProxySwitch que editaremos de la misma forma que se muestra en el ejemplo de la captura de pantalla, con sólo hacer clic en el boton de la extensión que se muestra en la parte inferior del navegador, activaremos y desactivaremos el uso de Polipo, cuando está en color rojo el icono, éste está activado. Si tenemos más proxys configurados, desde el menú de la extensión podremos seleccionar el indicado. La forma de añadir los proxys es siempre la misma, el nombre del proxy que se mostrará en el menú y los protocolos en los que pretendemos utilizarlo con la dirección del mismo, y todo esto entre corchetes, como se muestra a continuación.

[Polipo
  http=127.0.0.1:8123
]

Captura - MM3-ProxySwitcher - 1

Captura - MM3-ProxySwitcher - 2


c) Opera

Pulsamos Ctrl+F12 para abrir la ventana de opciones del navegador, luego seleccionamos Avanzado >> Redes y hacemos clic en Servidores proxy. Se abrirá otra ventana donde podremos colocar la dirección del proxy en la primera casilla de configuración, que es la única que hay que marcar, como se muestra en la 2ª captura de pantalla.

Captura - Polipo - Opera - 1

Captura - Polipo - Opera - 2


d) Links

En el navegador Links seleccionamos Configuración >> Opciones de red y en la casilla Proxy HTTP (máquina:puerto) añadimos localhost:8123

Captura - Polipo - Links


e) Dillo

Se explica en el capítulo 9 de la sección correspondiente del manual de Dillo.


f) Wget

Polipo mejora considerablemente la descarga de archivos con wget (sólo HTTP), editamos el archivo de configuración personal de wget en nuestro home: ~/.wgetrc, si no lo tenemos copiamos el del sistema, que se encuentra en /etc/wgetrc

$ cp /etc/wgetrc ~/.wgetrc

nos vamos a la línea 75 y añadimos lo que está en rojo.

# You can set the default proxies for Wget to use for http and ftp.
# They will override the value in the environment.
http_proxy = 127.0.0.1:8123
#ftp_proxy = http://proxy.yoyodyne.com:18023/

Para activar el proxy cada vez que lo deseemos, añadir la opción --proxy=on al comando de ejecución de la descarga, un ejemplo:

[jose@localhost descargas]$ wget -c --proxy=on http://www.desk9.com/Desk9Image/4_10/13B.JPG
--22:37:40--  http://www.desk9.com/Desk9Image/4_10/13B.JPG
           => `13B.JPG'
Connecting to 127.0.0.1:8123... conectado.
Petición Proxy enviada, esperando respuesta... 200 OK
Longitud: 347,429 (339K) [image/jpeg]

100%[====================================>] 347,429        3.72K/s    ETA 00:00

22:39:26 (3.31 KB/s) - `13B.JPG' saved [347429/347429]

La opción -c es la que permite continuar las descargas no completadas, yo la añado siempre por defecto. Para más información sobre Wget, su correspondiente manual.



Uso de Polipo con Tor y Privoxy  

a) Uso de Polipo con Tor

Desde la últimas versiones, Polipo tiene soporte de navegación anónima de forma directa con Tor, lo podemos configurar al vuelo (solo para la sesión en curso) desde la interfaz web de Polipo o añadirlo de forma permanente al archivo de configuración, que quedaría así:

# Uncomment this if you want to use a parent SOCKS proxy:

socksParentProxy = "localhost:9050"
socksProxyType = socks5

b) Uso de Polipo con Tor+Privoxy

Si queremos utilizar Privoxy como filtro de publicidad junto con Tor, nos olvidamos de la configuración anterior y añadimos en el apartado correspondiente la dirección de Privoxy, también lo podemos hacer en la interfaz web y también podemos añadir cualquier proxy anónimo de tipo web.

# Uncomment this if you want to use a parent proxy:

parentProxy = "localhost:8118"



Iniciamos Polipo  

Cuando tengamos Polipo ya en ejecución, para acceder a la interfaz web del mismo, escribimos la dirección http://localhost:8123 en el navegador, conveniente añadirlo a los marcadores para facilitar posteriores accesos.


Captura - Polipo - Firefox - 1

Si hacemos clic en The Polipo Manual tendremos acceso a la documentación del programa (muy recomendable pegarle un vistazo) y haciendo clic en The Configuration interface y luego en Current configuration., nos saldrá la configuración de Polipo, que en determinados apartados podremos modificar en tiempo real y desde cualquier usuario, es decir, que si el programa lo está ejecutando el root, aspectos como la navegación en modo desconectado o la utilización de proxys entre Polipo e internet, podrán ser modificados por cualquier usuario sólo para la sesión en curso de ejecución del programa.

Captura - Polipo - Firefox - 2




Controlar el tamaño de la caché de Polipo  

Nada mejor que utilizar este script para reducir el tamaño de la caché cuando ésta llegue a superar el que tengamos previsto. En mi caso particular, lo tengo fijado en 1,5 GB. El script lo que hace es borrar los archivos mas antiguos que contenga la caché en función del acceso por parte del proxy a éstos. Cuando lo descarguemos, lo instalamos como root en /usr/local/bin. La desinstalación y respaldo de este script viene incluida en los scripts del programa.

$ su
# mkdir -p /usr/local/bin
# install -m755 polipo_trimcache-0.2.py /usr/local/bin


Un ejemplo de uso, en el que se fija la caché en 500 MB

$ su
# polipo_trimcache-0.2.py -v /var/cache/polipo 500M


Si fueran GB, un ejemplo:

$ su
# polipo_trimcache-0.2.py -v /var/cache/polipo 1,5G

Para más información ejecutar polipo_trimcache-0.2.py --help



Consideraciones finales  

Para un rendimiento óptimo de la caché de Polipo es recomendable utilizar sistemas de archivos como XFS o Reiserfs, mi opinión personal es que XFS es el mejor sistema de archivos que existe en estos momentos para GNU/Linux, su ostracismo solo se entiende por el hecho de que detrás del mismo está una empresa comercial, algo que no pueden soportar los puristas y defensores a ultranza del peñazo llamado ext3 (continuado con ext4).

Por razones de seguridad el índice de la caché viene desactivado por defecto, y los permisos de la misma se fijan a 700 para los directorios y 600 para los archivos, es decir, sólo tiene acceso el usuario que ejecuta Polipo. Si queremos visualizar la caché a través del índice de la interfaz web y la lista de servidores, tendremos que descomentar lo siguiente en el archivo de configuración.

# Uncomment this if you want to enable the pages under /polipo/index?
# and /polipo/servers?.  This is a serious privacy leak if your proxy
# is shared.

disableIndexing = false
disableServersList = false

Una manera rápida de poner al proxy en modo desconectado es ejecutar el comando correspondiente en una ventana de terminal, es el único que suelo utilizar de todas las opciones disponibles y que podemos pasarle a través de la línea de comandos, quedaría así:

$ su
# polipo proxyOffline=true &




Enlaces


http://www.pps.jussieu.fr/%7Ejch/software/polipo/ >> La web de Polipo.


Foro Galería Blog


Actualizado el 04-12-2011

Proxys Caché - Polipo

Navegadores Web - SRWare IronProxys Caché - Smart Cache"