El anglicismo proxy (plural proxies) o servidor proxy, adaptado al español como proxi, en una red informática, es un servidor —programa o dispositivo—, que hace de intermediario en las peticiones de recursos que realiza un cliente (A) a otro servidor (C). Por ejemplo, si una hipotética máquina A solicita un recurso a C, lo hará mediante una petición a B, que a su vez trasladará la petición a C; de esta forma C no sabrá que la petición procedió originalmente de A. Esta situación estratégica de punto intermedio le permite ofrecer diversas funcionalidades: control de acceso, registro del tráfico, restricción a determinados tipos de tráfico, mejora de rendimiento, anonimato de la comunicación, caché web, etc. Dependiendo del contexto, la intermediación que realiza el proxy puede ser considerada por los usuarios, administradores o proveedores, como legítima o delictiva y su uso es frecuentemente discutido. La palabra inglesa proxy significa «apoderado» en español.
Características Comúnmente un servidor proxy es un equipo informático que intercepta conexiones de red hechas desde un cliente a un servidor de destino. El más popular es el servidor proxy de web. Interviene en la navegación por la Web, con distintos fines: seguridad, rendimiento, anonimato, etc. Existen proxys específicos para otros protocolos, como el proxy de FTP. El proxy ARP puede hacer de enrutador en una red, ya que hace de intermediario entre ordenadores. Proxy (patrón de diseño) también es un patrón de diseño (programación) con el mismo esquema que el proxy de red. Un componente hardware también puede actuar como intermediario para otros.
Como se ve, proxy tiene un significado muy general, aunque siempre es sinónimo de intermediario. Cuando un equipo de la red desea acceder a una información o recurso, es realmente el proxy quien realiza la comunicación y a continuación traslada el resultado al equipo que la solicitó.
Hay dos tipos de proxies atendiendo a quién es el que quiere implementar la política del proxy: proxy local: En este caso el que quiere implementar la política es el mismo que hace la petición. Por eso se le llama local. Suelen estar en la misma máquina que el cliente que hace las peticiones. Son muy usados para que el cliente pueda controlar el tráfico y pueda establecer reglas de filtrado que por ejemplo pueden asegurar que no se revela información privada (proxies de filtrado para mejora de la privacidad). proxy de red o proxy externo: El que quiere implementar la política del proxy es una entidad externa. Por eso se le llama externo. Se suelen usar para implementar cacheos, bloquear contenidos, control del tráfico, compartir IP, etc.
Ventajas En general, no solamente en informática, los proxies hacen posible: Control: solamente el intermediario hace el trabajo real, por tanto se pueden limitar y restringir los derechos de los usuarios, y dar permisos únicamente al servidor proxy. Ahorro: solamente uno de los usuarios (el proxy) ha de estar preparado para hacer el trabajo real. Con estar preparado se entiende que es el único que necesita los recursos necesarios para hacer esa funcionalidad. Ejemplos de recursos necesarios para hacer la función pueden ser la capacidad y lógica de la dirección de red externa (IP). Velocidad: si varios clientes van a pedir el mismo recurso, el proxy puede hacer caché: guardar la respuesta de una petición para darla directamente cuando otro usuario la pida. Así no tiene que volver a contactar con el destino, y acaba más rápido. Filtrado: el proxy puede negarse a responder algunas peticiones si detecta que están prohibidas. Modificación: como intermediario que es, un proxy puede falsificar información, o modificarla siguiendo un algoritmo. Anonimato: conectarse de forma anónima a un recurso externo sin revelar nuestra IP, pues es la IP pública del Proxy la que es usada para la obtención del recurso.
Desventajas En general, el uso de un intermediario puede provocar: Anonimato: si todos los usuarios se identifican como uno solo, es difícil que el recurso accedido pueda diferenciarlos. Pero esto puede ser malo, por ejemplo cuando hay que hacer necesariamente la identificación. Abuso: al estar dispuesto a recibir peticiones de muchos usuarios y responderlas, es posible que haga algún trabajo que no toque. Por tanto, ha de controlar quién tiene acceso y quién no a sus servicios, cosa que normalmente es muy difícil. Carga: un proxy tiene que hacer el trabajo de muchos usuarios. Intromisión: es un paso más entre origen y destino, y algunos usuarios pueden no querer pasar por el proxy. Y menos si hace de caché y guarda copias de los datos. Incoherencia: si hace de caché, es posible que se equivoque y dé una respuesta antigua cuando hay una más reciente en el recurso de destino. En realidad este problema no existe con los servidores proxy actuales, ya que se conectan con el servidor remoto para comprobar que la versión que tiene en caché sigue siendo la misma que la existente en el servidor remoto. Irregularidad: el hecho de que el proxy represente a más de un usuario da problemas en muchos escenarios, en concreto los que presuponen una comunicación directa entre 1 emisor y 1 receptor (como TCP/IP).
Aplicaciones El concepto de proxy es aplicado de muy distintas formas para proporcionar funcionalidades específicas.
Proxy caché Conserva el contenido solicitado por el usuario para acelerar la respuesta en futuras peticiones de la misma información de la misma máquina u otras. Habitualmente se trata de proxys HTTP/HTTPS accediendo a contenido web. Esta función es especialmente necesaria en redes con acceso precario a Internet, aunque los usuarios lo perciban a menudo como una intromisión que limita su privacidad frente a conexiones individuales directas.
Proxy de Web Se trata de un proxy para una aplicación específica: el acceso a la web con los protocolos HTTP y HTTPS, y accesoriamente FTP. Aparte de la utilidad general de un proxy puede proporcionar una caché compartida para las páginas web y contenidos descargados, actuando entonces como servidor proxy-caché. Esta caché es compartida por múltiples usuarios con la consiguiente mejora en los tiempos de acceso para consultas coincidentes y liberando de carga a los enlaces de acceso a Internet. Funcionamiento: El usuario realiza una petición (por ejemplo, en un navegador web) de un recurso de Internet (una página web o cualquier otro archivo) especificado por una URL. Cuando el proxy-caché recibe la petición, busca la URL resultante en su caché local. Si la encuentra, contrasta la fecha y hora de la versión de la página demanda con el servidor remoto. Si la página no ha cambiado desde que se cargó en caché la devuelve inmediatamente, ahorrándose mucho tráfico dado que solo envía un paquete por la red para comprobar la versión. Si la versión es antigua o simplemente no se encuentra en la caché, lo solicita al servidor remoto, lo devuelve al cliente que lo pidió y guarda o actualiza una copia en su caché para futuras peticiones.
Posibles usos Los proxies pueden aportar una serie de funcionalidades interesantes en distintos ámbitos: Pueden usarse para eludir filtros en el servidor de destino, como por ejemplo un filtrado de origen basado en geolocalización IP, técnica también conocida con el anglicismo de bypass, usando un proxy localizado en una ubicación autorizada en dicho filtro. Reducción del tráfico mediante la implementación de caché en el proxy. Las peticiones de páginas Web se hacen al servidor Proxy y no a Internet directamente. Por lo tanto se aligera el tráfico en la red y descarga los servidores destino, a los que llegan menos peticiones. El caché utiliza normalmente un algoritmo configurable para determinar cuándo un documento está obsoleto y debe ser eliminado de la caché. Como parámetros de configuración utiliza la antigüedad, tamaño e histórico de acceso. Dos de esos algoritmos básicos son el LRU (el usado menos recientemente, en inglés Least Recently Used) y el LFU (el usado menos frecuentemente, Least Frequently Used). Mejora de la velocidad en tiempo de respuesta mediante la implementación de caché en el proxy. El servidor Proxy crea un caché que evita transferencias idénticas de la información entre servidores durante un tiempo (configurado por el administrador) así que el usuario recibe una respuesta más rápida. Por ejemplo supongamos que tenemos un ISP que tiene un servidor Proxy con caché. Si un cliente de ese ISP manda una petición por ejemplo a Google esta llegará al servidor Proxy que tiene este ISP y no irá directamente a la dirección IP del dominio de Google. Esta página concreta suele ser muy solicitada por un alto porcentaje de usuarios, por lo tanto el ISP la retiene en su Proxy por un cierto tiempo y crea una respuesta en mucho menor tiempo. Cuando el usuario crea una búsqueda en Google el servidor Proxy ya no es utilizado; el ISP envía su petición y el cliente recibe su respuesta ahora sí desde Google. Los programas P2P se pueden aprovechar de la caché proporcionada por algunos proxies. Es el llamado Webcaché. Por ejemplo es usado en Lphant y algunos Mods del EMule. El proxy puede servir para implementar funciones de filtrado de contenidos. Para ello es necesaria la configuración de una serie de restricciones que indiquen lo que no se permite. Observar que esta funcionalidad puede ser aprovechada no solamente para que ciertos usuarios no accedan a ciertos contenidos sino también para filtrar ciertos ficheros que se pueden considerar como peligrosos como pueden ser virus y otros contenidos hostiles servidos por servidores web remotos. Un proxy puede permitir esconder al servidor web la identidad del que solicita cierto contenido. El servidor web lo único que detecta es que la ip del proxy solicita cierto contenido. Sin embargo no puede determinar la ip origen de la petición. Además, si se usa una caché, puede darse el caso de que el contenido sea accedido muchas más veces que las detectadas por el servidor web que aloja ese contenido. Los proxies pueden ser aprovechados para dar un servicio web a una demanda de usuarios superior a la que sería posible sin ellos. El servidor proxy puede modificar los contenidos que sirven los servidores web originales. Puede haber diferentes motivaciones para hacer esto: Algunos proxies pueden cambiar el formato de las páginas web para un propósito o una audiencia específicos (p. ej. mostrar una página en un teléfono móvil o una PDA) traduciendo los contenidos. Hay proxies que modifican el tráfico web para mejorar la privacidad del tráfico web con el servidor. Para ello se establecen unas reglas que el proxy tiene que cumplir. Por ejemplo el proxy puede ser configurado para bloquear direcciones y Cookies, para modificar cabeceras de las peticiones o quitar javascript que se considere peligroso. Es frecuente el uso de este tipo de proxies en las propias máquinas de los usuarios (proxies locales) para implementar un paso intermedio y que las peticiones no sean liberadas/recibidas a/de la red sin haber sido previamente limpiadas de información o contenido peligroso o privado. Este tipo de proxies es típico en entornos donde hay mucha preocupación sobre la privacidad y se suele usar como paso previo a la petición del contenido a través de una red que persiga el anonimato como puede ser Tor. Los programas más frecuentes para hacer este tipo de funcionalidad son: Privoxy: se centra en el contenido web. No presta servicio de caché. Analiza el tráfico basándose en reglas predefinidas que se asocian a direcciones especificadas con expresiones regulares y que aplica a cabeceras, contenido, etc. Es altamente configurable y tiene extensa documentación. Pólipo: tiene características que lo hacen más rápido que Privoxy (cacheo, tubería, uso inteligente de rango de peticiones). Su desventaja es que no viene configurado por defecto para proveer anonimato a nivel de la capa de aplicación.