# Proxy

Em redes de computadores, um proxy (em português 'procurador', 'representante') é um servidor (um sistema de computador ou uma aplicação) que age como um intermediário para requisições de clientes solicitando recursos de outros servidores. Um cliente conecta-se ao servidor proxy, solicitando algum serviço, como um arquivo, conexão, página web ou outros recursos disponíveis de um servidor diferente, e o proxy avalia a solicitação como um meio de simplificar e controlar sua complexidade. Os proxies foram inventados para adicionar estrutura e encapsulamento aos sistemas distribuídos. Esses servidores têm uma série de usos, como filtrar conteúdo, providenciar anonimato, entre outros. Hoje, a maioria dos proxies é proxy web, facilitando o acesso ao conteúdo na World Wide Web e fornecendo anonimato.
Um servidor proxy pode, opcionalmente, alterar a requisição do cliente ou a resposta do servidor e, algumas vezes, pode disponibilizar este recurso mesmo sem se conectar ao servidor especificado. Pode também atuar como um servidor que armazena dados em forma de cache em redes de computadores. São instalados em máquinas com ligações tipicamente superiores às dos clientes e com poder de armazenamento elevado.
Um proxy de cache HTTP ou, em inglês, caching proxy, permite por exemplo que o cliente requisite um documento na World Wide Web e o proxy procura pelo documento na sua caixa (cache). Se encontrado, a requisição é atendida e o documento é retornado imediatamente. Caso contrário, o proxy busca o documento no servidor remoto, entrega-o ao cliente e salva uma cópia em seu cache. Isto permite uma diminuição na latência, já que o servidor proxy, e não o servidor original, é requisitado, proporcionando ainda uma redução do uso da largura de banda.

## Surgimento

O servidor proxy surgiu da necessidade de conectar uma rede local (ou LAN) à Internet através de um computador da rede que compartilha a sua conexão com as demais máquinas. Ou seja, se considerarmos que a rede local é uma rede "interna" e a Interweb é uma rede "externa", podemos dizer que o proxy é aquele que permite que outras máquinas tenham acesso externo.
Geralmente, as máquinas da rede interna não possuem endereços válidos na Internet e, portanto, não têm uma conexão direta com a mesma. Assim, toda a solicitação de conexão de uma máquina da rede local para uma máquina da Internet é direcionada ao proxy; este, por sua vez, realiza o contato com máquina desejada, repassando a resposta da solicitação para a máquina da rede local. Por este motivo, é utilizado o termo proxy para este tipo de serviço, que, em Informática, é geralmente traduzido como intermediário. Outra acepção aceita é procurador (também fora do contexto da Informática).

## Usos de servidores proxy
### Monitoramento e filtragem
#### Software de controle de conteúdo

Um servidor proxy web de filtro de conteúdo fornece controle administrativo sobre o conteúdo que pode trafegar em ambas as direções pelo proxy. É comumente utilizado em organizações comerciais e não-comerciais (especialmente escolas) para garantir que o uso da Internet está de acordo com a política de uso aceitável.
Um proxy de filtragem de conteúdo frequentemente suportará autenticação de usuário, para controlar o acesso a web. Ele normalmente também produz registros com detalhes das URLs acessadas por usuários específicos ou para monitorar estatísticas de uso da largura de banda.

### Melhorar o desempenho

Um servidor de proxy de cache acelera as requisições de serviços recuperando o conteúdo salvo de uma requisição anterior realizada por qualquer cliente da rede local. Proxies de cache armazenam cópias locais de recursos requisitados com frequência, permitindo que grandes organizações reduzam significativamente seus custos e montantes de utilização de largura de banda, enquanto aumentam significativamente o desempenho. A maioria dos PSIs (Provedores de Serviço de Internet) e grandes empresas possuem um proxy de cache. Os proxies de cache foram os primeiros tipos de servidores proxy. Proxies web são normalmente usados para armazenar páginas web de um servidor web. Proxies de cache implementados de maneira inadequada podem causar problemas, como uma incapacidade de utilizar autenticação de usuário.

## Implementações de servidores proxy
### Servidores proxy web

Uma aplicação proxy popular é o proxy de armazenamento local (ou cache) web, em inglês caching web proxy, um proxy web usado para armazenar e atualizar (conforme pré-programado). Este provê um armazenamento local de páginas da Internet e arquivos disponíveis em servidores remotos da Internet assim como sua constante atualização, permitindo aos clientes de uma rede local (LAN) acessá-los mais rapidamente e de forma viável sem a necessidade de acesso externo.
Quando este recebe uma requisição para acesso a um recurso da Internet (a ser especificado por uma URL), um proxy que usa cache procura resultados da URL em primeira instância no armazenamento local. Se o recurso for encontrado, este é consentido imediatamente. Se não, carrega o recurso do servidor remoto, retornando-o ao solicitante que armazena uma cópia deste na sua unidade de armazenamento local. O cache usa normalmente um algoritmo de expiração para a remoção de documentos e arquivos de acordo com a sua idade, tamanho e histórico de acesso (previamente programado). Dois algoritmos simples são o Least Recently Used (LRU) e o Least Frequently Used (LFU). O LRU remove os documentos que passaram mais tempo sem serem usados, enquanto o LFU remove documentos frequentemente menos usados.

### Proxy transparente

Também conhecido como um proxy de interceptação, proxy inline ou proxy forçado, um proxy transparente intercepta uma comunicação normal na camada de rede sem necessitar de qualquer configuração do cliente específica. Os clientes não precisam estar cientes da existência do proxy. Um proxy transparente normalmente está localizado entre o cliente e a Internet, com o proxy realizando algumas das funções de um gateway ou roteador.
* RFC 2616(Protocolo de Transferência de Hipertexto - HTTP/1.1) oferece definições padrões:
    "Proxy transparente é o que não modifica o pedido ou resposta para além do que é necessário para a autenticação e identificação do proxy".
    "Proxy não transparente' é o que modifica a solicitação ou resposta, a fim de fornecer algum serviço adicional ao agente de usuário, como serviços de grupo de anotação, transformação de tipo de mídia, redução de protocolo ou filtragem de anonimato".

#### Propósito

Proxies de interceptação são normalmente usados em empresas para impor a política de uso aceitável e para aliviar as sobrecargas administrativas, uma vez que nenhuma configuração do navegador do cliente é necessária. Esta segunda razão entretanto é mitigada por recursos como política de grupo do Active Directory ou detecção de proxy automática ou via DHCP.
Proxies de interceptação também são normalmente usados por PSIs em alguns países para economizar largura de banda e melhorar os tempos de resposta ao cliente por meio do cache. Isto é mais comum em países onde a largura de banda é mais limitada (e.g. nações insulares) ou devem ser pagas.

#### Problemas

O desvio / intercepção de uma conexão TCP cria vários problemas. Em primeiro lugar o IP e a porta de destino original devem de alguma forma ser comunicados ao proxy. Isso nem sempre é possível (por exemplo, onde o gateway e o proxy residem em máquinas diferentes). Existe uma classe de ataques entre sites que dependem de certos comportamentos de interceptação de proxies que não verificam ou não têm acesso a informações sobre o destino original (interceptado).

## Proxy aberto

Um proxy aberto é um servidor proxy acessível por um internauta. Geralmente, um servidor proxy permite aos usuários, dentro de um grupo na rede, o estoque e o repasse de serviços da Internet, igualmente ao DNS ou páginas web para reduzir e controlar a banda larga utilizada pelo grupo. Com um proxy aberto, entretanto, qualquer usuário da Internet é capaz de usar o serviço de repassagem (forwarding).

### Vantagens

Um proxy aberto anônimo permite aos usuários conciliarem os seus endereços IP (e, consequentemente, ajudar a preservar o anonimato e manter a segurança) enquanto navega pela web ou usando outros serviços da Internet. Apesar de mal intencionados poderem fazer uso do anonimato para abusar de serviços, o cidadão de um país de regime repressivo, por exemplo, pode aproveitar-se da habilidade do proxy para acessar sites proibidos no seu país. Vários sites oferecem, com regularidade, listas atualizadas de proxies abertos.

### Desvantagens

É possível para um computador rodar como um servidor proxy aberto, sem que o dono tenha conhecimento da invasão. Isto pode ser causado por mudanças na configuração do programa instalado do proxy, ou por infecção de um vírus ou cavalo de tróia. Nesse último caso, o computador infectado é chamado de "computador escravo".
Usar um proxy aberto é um alto risco para o operador do servidor; oferecer um servidor proxy anônimo pode causar sérios problemas legais para o dono. Tais serviços são frequentemente usados para invadir sistemas e acessar outros produtos ou serviços ilegais. Ademais, tal proxy pode causar alto uso de banda larga, resultando em maior latência na subrede e violação dos limites de banda. Um proxy aberto mal configurado pode, também, permitir acesso a subredes privadas, ou DMZ: este é um importante requisito de segurança a ser considerado por uma empresa, ou, até, redes domésticas, dado que computadores que, normalmente, estão fora de risco ou com firewall ativada também podem ser atacados.
Muitos proxies abertos são lentos, chegando a taxas mais baixas que 14,4kbit/s, ou ainda menos de 300bit/s, enquanto noutros casos a velocidade é variável. Alguns, como o 'PlanetLab', são mais velozes e foram intencionalmente direcionados ao uso público.
Sendo os proxies abertos considerados abusivos, inúmeros métodos foram desenvolvidos para detectá-los e recusar seus serviços. As redes IRC com políticas de uso estritas testam, automaticamente, sistemas de clientes para tipos conhecidos de proxies abertos. Assim sendo, um servidor de correio pode ser configurado para automaticamente testar envios para proxies abertos, fazendo uso de programas como o 'proxycheck'. Recentemente, mais e mais servidores de correio são configurados fora da caixa para consultar diversos servidores DNSBL, com o intuito de bloquear spam; alguns destes DNSBLs também listam proxies abertos.

### Legalidade

Temendo pelo que seus cidadãos veem na Internet, muitos governos totalitários frequentemente empregam rastreadores de IP, atentando contra a privacidade do cidadão. Muitos são apanhados em flagrante e punidos perante a lei.

## Proxy anônimo

Um proxy anônimo é uma ferramenta que se esforça para fazer atividades na Internet sem vestígios: acessa a Internet a favor do usuário, protegendo as informações pessoais ao ocultar a informação de identificação do computador de origem.
O operador do proxy ainda pode relacionar as informações dos usuários com as páginas vistas e as informações enviadas ou recebidas.
Quem não quer depender de um só operador proxy usa uma cadeia de diferentes proxies. Se um dos proxies da cadeia não colaborar com os outros e não guardar as informações dos usuários, torna-se impossível identificar os usuários através do número IP.
Também há redes de computadores que atuam cada um como um proxy, formando assim cadeias de proxies grátis que procuram as rotas do tráfego automaticamente. São redes como a I2P — A Rede Anónima. Além disso, há medidas contra a análise de tráfego.
Através dos proxies é possível enviar mensagens eletrônicas anônimas e visitar páginas na Internet de forma anônima. Também há mensageiros simples e anônimos, o IRC e o intercâmbio de arquivos.

### Webproxy

Um webproxy é um tipo de proxy que funciona sem a necessidade de configuração do navegador. Funcionam com interface web. A maioria é desenvolvida em PHP, tendo projetos open-sources como PHPMyProxy e PHProxy já prontos para a hospedagem. Apresentam problemas com sites que fazem uso de sessões e, muitas vezes também, não lidam bem com cookies.

### Anonimidade?

Alguns donos de proxies incluem o registro de logs (relatórios) em seus servidores, para diminuir problemas legais. Guardam as requisições e o endereço IP original do usuário. Além disso, alguns enviam cabeçalhos HTTP, como X-Powered-by, contendo o endereço IP original do usuário.

### Uso

Proxys são mais utilizados em salas escolares de informática, empresas e outros locais onde se precisa dividir a Internet entre vários computadores.
Além disso, proxies abertos e anônimos também são frequentemente utilizados em países onde a Internet é censurada ou onde ocorrem guerras, para denunciar constantemente os últimos acontecimentos.

### Proxy do Tor Onion

O Tor (The Onion Router) é um sistema de proxy que foi criado para fornecer anonimato online. O programa cliente do Tor roteia o tráfego da internet por meio de uma rede mundial voluntária de servidores para esconder a localização e as atividades realizadas de um determinado computador, impedindo a condução de vigilância da rede e a análise do seu tráfego. O uso do Tor, então, dificulta o rastreio da navegação na internet, sendo uma ferramenta essencial na proteção da privacidade e liberdade pessoais dos usuários.
O "roteamento Onion" (sendo "onion" a palavra inglesa para "cebola") se refere à natureza multicamadas do seu serviço de criptografia: os dados são criptografados diversas vezes, antes de serem enviados por meio de sucessivos canais de retransmissão do Tor. Cada um desses canais é capaz de descriptografar apenas uma "camada" antes de seguir para a próxima retransmissão até que, ao final, chegue ao destino final. Isso reduz a possibilidade de que os dados originais sejam decodificados ou entendidos em meio ao trânsito.

## Programas

* Setme.fr (Proxy Online)
* Squid
* Microsoft Internet Security and Acceleration Server (ISA Server) Descontinuado
* Microsoft Fore Front TMG (foi descontinuado janeiro de 2016)
* WinProxy
* Winconnection
* OMNE Wall
* smartWEB
* Anonymouse (webproxy)
* BlueCoat
* Sonicwall
* Polipo
* Speedr (speedr)