Não exatamente: depende de como o cliente está configurado. Vamos usar o IE como o exemplo básico.
Se você configurar o IE com um proxy explícito : não há outras opções marcadas, proxy configurado para algo: 8080.
-
O usuário digita um endereço
-
O IE verifica o endereço para uma correspondência de cadeia com a lista de exceções do proxy do IE (por exemplo, "Ignorar proxy para esses endereços:")
a. Se corresponder a uma entrada na Ignorar lista , o cliente usa o seu próprio DNS para resolver o nome e em seguida, o cliente conecta-se diretamente ao endereço IP de destino na porta 80 (assumida) e, em seguida, envia uma solicitação como:
GET /something.htm HTTP/1.1
eHost: fulldomainame.example.com
e que é o fim dele para uma entrada correspondente.
c. Se nenhuma entrada da lista de ignorar for igual a , continue:
-
O IE se conecta ao proxy configurado e envia uma solicitação do formulário:
GET http://fulldomainname.example.com/something.htm HTTP/1.1
(BTW: esse uso do FQDN como URL é uma maneira de dizer que um cliente pensa que está falando com um proxy em vez de um servidor web real)
-
O proxy resolve o nome do host usando seu próprio DNS, conecta-se ao site de destino, etc, etc
Ao usar o WPAD / PAC:
No caso de usar um script WPAD ou Autoconfiguration (como fornecido pelo ISA / TMG quando a autoconfiguração estiver habilitada), é diferente:
-
O usuário digita um endereço
-
O cliente faz o download do arquivo atual wpad.dat / autoproxy.js / .pac de seu local configurado
-
O cliente procura o ponto de entrada " FindProxyForUrl " no arquivo js e o executa
-
O script Autoproxy processa o hostname e o URL . Este é um arquivo javascript de função limitada, mas muitas coisas ainda são possíveis:
a. isso pode incluir resolução de nomes (IsInNet, DnsResolve)
b. isso pode incluir string matching (ShExpMatch)
c. isso pode incluir contando até um milhão (i ++)
d. isso pode incluir mensagens pop-up de alerta narky se o administrador for um idiota (ou apenas engraçado (ou depuração))
-
A função FindProxyForUrl retorna pelo menos uma string : uma lista ordenada dos melhores proxies a serem usados (ponto-e-vírgula separado)
a. ou "DIRECT" , caso em que o cliente precisa resolver o nome em si e se conectar diretamente, conforme o caso do Bypass acima
b. ou "PROXY proxyname: 8080" ou similar, caso em que o cliente se conecta a essa porta nesse proxy, informa para OBTER o URL completo e o proxy executa a resolução de nomes .
- Como um exemplo : se a função de script retornou "PROXY yourProxy: 8080; DIRECT" que informa ao cliente para se conectar ao yourproxy no Porta TCP 8080 para solicitar este URL, e se essa conexão não puder ser estabelecida, tente ir direto. Note que a falha na configuração da sessão TCP não é exatamente rápida, portanto, essa não é uma experiência agradável de failover para um usuário, mas nada supera. Talvez.
Ocasionalmente há falhas, sutilezas e comportamentos inexplicáveis, mas na maioria das vezes quando as coisas não estão quebradas de maneiras estranhas e interessantes, o que foi dito acima é como eu já vi isso funcionar por muitos anos. Navegadores mais novos estão otimizando o comportamento, paralelizando coisas e tentando coisas interessantes o tempo todo, então confira os documentos mais recentes para o seu navegador para entender os detalhes.
WinSock Proxy / Client ISA / Cliente TMG :
Se você estiver interessado no Winsock Proxy Client (do TMG / ISA Server), essa é uma história diferente, com mais flexibilidade e partes móveis. Muito para entrar aqui, mas há documentos em torno dos quais descrevem como isso funciona. Resumindo: ele se conecta ao Windows Sockets e pode interceptar o tráfego baseado em TCP / UDP e as solicitações de resolução de nomes por aplicativo e por usuário. Muito poderoso, mas também obsoleto agora, e não foi atualizado em vários anos.
Os clientes podem ser realmente grudentos:
Uma nota final : uma vez que um cliente HTTP decidiu falar com um proxy para um determinado site / url, não há como o proxy informar que não .
Não há código de status ou cabeçalho HTTP para "Eu não envio isso, você deve ir diretamente para ele" ...
Uma vez que o cliente decide que uma determinada URL é servida por proxy, segue-se proxy-death-grip .
A única maneira de evitar isso é obtendo a lógica de seleção logo antes do cliente fazer sua conexão, na lista PAC ou Bypass.