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

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Navegadores Web - LinksProxys Caché - Smart Cache"

Proxys Caché - Polipo




Proxys Caché - Polipo




Copyright

Copyright © José Luis Lara Carrascal  2008-2018   http://manualinux.es



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
Enlaces




Introducción  

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 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.



Características  

* Usa pipelining HTTP/1.1 si detecta 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-18 ~]$ 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 -c "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 - (8.1.0) o Clang - (6.0.0)
* Make - (4.2.1)



Descarga

polipo-1.1.1.tar.gz

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=amdfam10 -mtune=amdfam10'

Donde pone amdfam10 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* 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 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD
VIA
IDT

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, utilizar el parámetro -flto

Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos específicos en el proceso de compilación
Clang
$ export {C,CXX}FLAGS+=' -Qunused-arguments'

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64"

Establecer el uso de enlazador dinámico para LLD
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=' -Wl,--lto-partitions=2'
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--thinlto-jobs=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, no es necesario añadir el parámetro en cuestión.

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción

$ tar zxvf polipo-1.1.1.tar.gz
$ cd polipo-1.1.1
$ sed -e '15s:^:#:' -e '63s:=:+&:' -i Makefile

Explicación de los comandos

sed -e '15s:^:#:' -e '63s:=:+&:' -i Makefile : Modificamos el archivo Makefile para que el mismo acepte las variables de entorno de optimización que hemos aplicado anteriormente. Y borramos las predefinidas que trae por defecto este archivo.

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 Información general sobre el uso de los comandos

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

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.

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

Estadísticas de Compilación e Instalación de Polipo

Estadísticas de Compilación e Instalación de Polipo
CPU AMD Phenom(tm) II X4 965 Processor
MHz 3415.709
RAM 4096 MB
Sistema de archivos XFS
Versión del Kernel 4.16.15-ck1 SMP PREEMPT x86_64
Modo de frecuencia de la CPU ondemand
Versión de Glibc 2.27
Enlazador dinámico LLD 6.0.0
Compilador Clang 6.0.0
Parámetros de optimización -03 -march=amdfam10 -mtune=amdfam10 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin
Parámetros de compilación -j4
Tiempo de compilación 5"
Archivos instalados 78
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 980 KB

Consumo inicial de CPU y RAM de Fotoxx

Consumo inicial de CPU y RAM de Fotoxx
Proceso
CPU Memoria física
fotoxx 0 % 852 KB

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 tenemos 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.1.1-scripts.tar.gz

$ su
# tar zxvf polipo-1.1.1-scripts.tar.gz
# cd polipo-1.1.1-scripts
# ./Desinstalar_polipo-1.1.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.1.1-scripts.tar.gz
# cd polipo-1.1.1-scripts
# ./Respaldar_polipo-1.1.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.1.1



Configurar el inicio de Polipo  

1) OpenMandriva y compatibles (Systemd)

Abrimos como root un editor de texto y añadimos lo siguiente:

#!/bin/sh

/usr/local/bin/polipo &

Lo guardamos con el nombre rc.local en el directorio /etc/rc.d, y posteriormente le damos permisos de ejecución. 

$ su
# chmod +x /etc/rc.d/rc.local

Activamos el uso de este script de inicio en Systemd, y lo iniciamos para comprobar que funciona correctamente.

# ln -s /lib/systemd/system/rc-local.service /etc/systemd/system
# systemctl enable rc-local.service
# systemctl start rc-local-service


2) Slackware y derivados (SysVinit)

Abrimos como root el script /etc/rc.d/rc.local y añadimos al final del mismo lo que está en color rojo

#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.


# To disable avahi, chmod rc.avahidaemon and rc.avahidnsconfd to 644
if [ -x /etc/rc.d/rc.avahidaemon -a -x /etc/rc.d/rc.avahidnsconfd ]; then
/etc/rc.d/rc.avahidaemon start
/etc/rc.d/rc.avahidnsconfd start
fi

# To disable networkmanager, chmod rc.networkmanager to 644
if [ -x /etc/rc.d/rc.networkmanager ]; then
. /etc/rc.d/rc.networkmanager start
fi

# Ufw
if [ -x /etc/init.d/ufw ]; then
/etc/init.d/ufw start
fi

/usr/local/bin/polipo &



3) Linux Mint Debian y compatibles (SysVinit)

Abrimos como root el script /etc/rc.local y añadimos al final del mismo lo que está en color rojo. Luego posteriormente, lo habilitamos con el comando update-rc.d.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/local/bin/polipo &

exit 0


$ su
# update-rc.d -f rc.local start 99 2 3 4 5

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.

1) Mozilla Firefox y Seamonkey

Aunque lo podemos configurar desde las preferencias del navegador, lo mejor es instalar la extensión MM3 Proxy 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 hacerlo 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


2) 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


3) Dillo

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


4) 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 79 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  

1) 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í, en las líneas 42 y 43 del mismo:

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

socksParentProxy = "localhost:9050"
socksProxyType = socks5

2) 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, editando la línea 37 del archivo de configuración.

# 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

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, en las líneas 84 y 85.

# 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

Para desactivar el uso de la caché, es decir, Polipo no almacenará ninguna página que visualicemos, basta descomentar la línea 69 del archivo de configuración.

### On-disk data
### ************

# Uncomment this if you want to disable the on-disk cache:

diskCacheRoot = ""

Y si la queremos ubicar en otro directorio alternativo al predefinido, editamos la línea 74 del archivo de configuración, escribiendo la nueva ruta de ubicación de la misma. Esto es útil si tenemos instaladas más de una distribución y queremos utilizar un directorio caché compartido.

# Uncomment this if you want to put the on-disk cache in a
# non-standard location:

diskCacheRoot = "/mnt/slackware/polipo-cache"



Enlaces


http://www.pps.univ-paris-diderot.fr/~jch/software/polipo >> La web de Polipo.


Foro Galería Blog


Actualizado el 13-06-2018

Proxys Caché - Polipo

Navegadores Web - LinksProxys Caché - Smart Cache"