Segurança : Cisco Web Security Appliance

Que é um arquivo Pac do proxy e há algum exemplo?

19 Setembro 2015 - Tradução por Computador
Outras Versões: Versão em PDFpdf | Inglês (22 Agosto 2015) | Feedback

Índice

Contribuído por Khoa Nguyen e por Siddharth Rajpathak, engenheiros de TAC da Cisco.

Pergunta:

Que é um arquivo Pac do proxy, e há algum exemplo?

Ambiente: Ferramenta de segurança da Web de Cisco

Nota: Este artigo da base de conhecimento provê o software que não é mantido nem é apoiado por Cisco.  A informação é fornecida como uma cortesia para sua conveniência. Para a assistência adicional, contacte por favor o fornecedor de software.

Link de referência: Javascript ou arquivos de exemplo do Auto-proxy de JScript


Javascript ou arquivos de exemplo do Auto-proxy de JScript

Os seguintes scripts fornecem exemplos de como um arquivo “.pac” poderia ser usado para especificar um auto-proxy URL. Para usar estas funções, você deve mudar os nomes, os números de porta, e os endereços IP de Um ou Mais Servidores Cisco ICM NT do proxy.

  1. As funções do isInNet, as isResolvable, e do dnsResolve perguntam um servidor DNS
  2. As referências aos objetos, às propriedades, ou aos métodos do modelo de objeto fazem com que o arquivo da configuração automática do proxy falhe silenciosamente. Por exemplo, as referências window.open (...), o alerta (...), e a senha (...) todo fazem com que o arquivo da configuração automática do proxy falhe no internet explorer.

Exemplo 1: Os host locais conectam direto, todos os outro conectam através do proxy

As seguintes verificações de função para ver se o hostname é um host local, e se é, se a conexão é direta. Se o hostname não é um host local, a conexão é com o proxy (proxy).
função FindProxyForURL (URL, host)
 {
 se (isPlainHostName(host))
 retorne “DIRIGEM”;
 mais
 retorne o “PROXY proxy:80";
 }

As verificações de função do isPlainHostName para ver se há algum ponto no hostname. Em caso afirmativo, retorna falso; se não, a função retorna verdadeiro.

Nota: Para uma conexão direta ao web server local, um domínio ou um fósforo da sub-rede puderam igualmente ser precisados. Não todos os pedidos aos web server locais são feitos usando apenas nomes de host

Exemplo 2: Os anfitriões dentro do Firewall conectam servidores locais diretos, exteriores conectam através do proxy

As seguintes verificações de função para considerar se o host é um hostname “liso” (que significam o Domain Name não são incluídas) ou parte de um domínio particular (.company.com) mas o hostname não é WWW ou HOME.
função FindProxyForURL (URL, host)
 {
 se ((isPlainHostName(host) ||
 dnsDomainIs (host, “.company.com”)) &&
 ! && dos localHostOrDomainIs (host, “www.company.com ")
 ! localHostOrDoaminIs (host, “home.company.com”))
 retorne “DIRIGEM”;
 mais
 retorne o “PROXY proxy:80";
 }


Nota:

  • A função dos localHostOrDomainIs é executada somente para URL no domínio local.
  • Os dnsDomainIs funcionam os retornos verdadeiros se o domínio do hostname combina o domínio dado.

Exemplo 3: Se o host é solucionável, conecte direto. Se não conecte usando um proxy.

A seguinte função pede o servidor DNS para tentar resolver o hostname passado a ela. Se pode, a seguir uma conexão direta está feita. Se não pode, a conexão está feita através do proxy. Isto é útil quando um servidor interno de DNS é usado para resolver todos os nomes de host internos.
função FindProxyForURL (URL, host)
 {
 se (isResolvable(host))
 retorne “DIRIGEM”;
 mais
 retorne o “PROXY proxy:80";
 }

Veja a nota na função isResolvable na parte superior da página.


Exemplo 4: Se o host está na sub-rede especificada, conecte direto. Se não conecte usando um proxy.

A seguinte função compara um teste padrão e uma máscara dados do endereço IP de Um ou Mais Servidores Cisco ICM NT com o hostname. Isto é útil se determinados anfitriões em uma sub-rede estiverem conectados diretamente e outro estiverem conectados usando um proxy.
função FindProxyForURL (URL, host)
 {
 se (isInNet (host, "999.99.9.9", "255.0.255.0"))
 retorne “DIRIGEM”;
 mais
 retorne o “PROXY proxy:80";
 }

Veja a nota na função do isInNet na parte superior da página.

A função do isInNet (host, teste padrão, máscara) retorna verdadeiro se o endereço IP de Um ou Mais Servidores Cisco ICM NT do host combina o teste padrão especificado. A máscara indica qual parte do endereço IP de Um ou Mais Servidores Cisco ICM NT a combinar (255=match, 0=ignore).


Exemplo 5: Determine o tipo de conexão baseado no domínio do host

A seguinte função especifica uma conexão direta se o host é local. Se o host não é local, esta função determina que proxy se usar baseou no domínio do host. Isto é útil se o Domain Name do host é um dos critérios para a seleção do proxy.
função FindProxyForURL (URL, host)
 {
 se (isPlainHostName(host))
 retorne “DIRIGEM”;
 mais se (shExpMatch (host, “*.com”))
 retorne o “PROXY comproxy:80";
 mais se (shExpMatch (host, “*.edu”))
 retorne o “PROXY eduproxy:80";
 mais
 retorne do “o proxy PROXY”;
 }

A função do shExpMatch (estreptococo, shexp) retorna verdadeiro se o estreptococo combina o shexp usando testes padrões da expressão do shell.


Exemplo 6: Determine o tipo de conexão baseado no protocolo que está sendo usado

A seguinte função extrai o protocolo que está sendo usado e faz uma seleção do proxy em conformidade. Se nenhum fósforo é feito no protocolo, a seguir uma conexão direta está feita. Isto é útil se o protocolo que está sendo usado é um dos critérios para a seleção do proxy.
função FindProxyForURL (URL, host)
 {
 se (url.substring(0, 5) HTTP do == “: ") {
 retorne o “PROXY proxy:80";
 }
 mais se (url.substring(0, 4) ftp do == “: ") {
 retorne o “PROXY fproxy:80";
 }
 mais se (url.substring(0, 7) Gopher do == “: ") {
 retorne do “o gproxy PROXY”;
 }
 mais se (url.substring(0, 6) https do == “: ") {
 retorne o “PROXY secproxy:8080";
 }
 mais {
 retorne “DIRIGEM”;
 }
 }

A função do substring extrai o número especificado de caráteres de uma corda.


Exemplo 7: Determine o ajustes do proxy verificando para ver se o hostname combina o endereço IP de Um ou Mais Servidores Cisco ICM NT

A seguinte função faz uma seleção do proxy traduzindo o hostname em um endereço IP de Um ou Mais Servidores Cisco ICM NT e comparando o a uma série especificada.
função FindProxyForURL (URL, host)
 {
 se (== "999.99.99.999") do dnsResolve(host) {//= http://proxy
 retorne o “PROXY secproxy:8080";
 }
 mais {
 retorne o “PROXY proxy:80";
 }
 }

Veja a nota na função do dnsResolve na parte superior da página.

Exemplo 8: Se o IP de host combina especificou o IP, conecta através do proxy, conecta mais direto

A seguinte função é uma outra maneira de fazer uma seleção do proxy baseada em especificar um endereço IP de Um ou Mais Servidores Cisco ICM NT. Este exemplo, o exemplo diferente 7, usa a chamada de função para obter explicitamente o endereço IP de Um ou Mais Servidores Cisco ICM NT numérico (o exemplo 7 usa a função do dnsResolve para traduzir o hostname no endereço IP de Um ou Mais Servidores Cisco ICM NT numérico).
função FindProxyForURL (URL, host)
 {
 se (== "999.99.999.99" do myIpAddress()) {
 retorne o “PROXY proxy:80";
 }
 mais {
 retorne “DIRIGEM”;
 }
 }

Os myIpAddress funcionam retornos o endereço IP de Um ou Mais Servidores Cisco ICM NT (no formato do inteiro-ponto) do host que o navegador está executando sobre.

Exemplo 9: Se há algum ponto no hostname, conecte usando um proxy. Se não, conecte direto.

As seguintes verificações de função para ver quantos pontos estão no hostname. Se há algum ponto no hostname, faça uma conexão através do proxy. Se não há nenhum ponto no hostname, faça uma conexão direta. Esta é uma outra maneira de determinar os tipos de conexão baseados em características do hostname.
função FindProxyForURL (URL, host)
 {
 se (dnsDomainLevels(host) > 0) {//se o número de pontos no host > 0
 retorne o “PROXY proxy:80";
 }
 retorne “DIRIGEM”;
 }

Os dnsDomainLevels funcionam retornos um o inteiro igual ao número de pontos no hostname.


Exemplo 10: Especifique dias da semana para conectar através do proxy, outros dias conectam direto

A seguinte função determina o tipo de conexão especificando os dias da semana que são apropriados para um proxy. Os dias que não cai entre estes parâmetros usam uma conexão direta. Esta função poderia ser útil nas situações onde você pôde querer usar um proxy quando o tráfego é pesado e para permitir uma conexão direta quando o tráfego é luz.
função FindProxyForURL (URL, host)
 {
 se (weekdayRange (“QUARTA-FEIRA”, “SAT”, “GMT”))
 retorne o “PROXY proxy:80";
 mais
 retorne “DIRIGEM”;
 }

A função do [, GMT] weekdayRange(day1 [,day2]) retorna se o tempo de sistema atual cai dentro da escala especificada pelos parâmetros day1, day2, e GMT. Somente o primeiro parâmetro é exigido. O parâmetro GMT presume que os valores do tempo se realizam no horário de Greenwich um pouco do que o fuso horário local.


Exemplo 11: Balanceamento de carga com uma função do cálculo simples

função FindProxyForURL (URL, host) {
retorne o randomProxy();
}
randomProxy() da função
{
comute (Math.floor (Math.random () *2))
{
caso 0: retorne o “PROXY 1.1.1.1:3128; PROXY 2.2.2.2; PROXY DIRETO; ”
caso 1: retorne o “PROXY 2.2.2.2:3128; PROXY 1.1.1.1; PROXY DIRETO; ”
}
}

Você verá que os casos igualmente executam um Failover caso que um proxy não está disponível.


Discussões relacionadas da comunidade de suporte da Cisco

A Comunidade de Suporte da Cisco é um fórum onde você pode perguntar e responder, oferecer sugestões e colaborar com colegas.


Document ID: 118076