Índice

Pergunta:

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 faz referência ao software para o qual a Cisco não oferece manutenção ou compatibilidade.  As informações foram disponibilizadas como cortesia para sua conveniência. Para obter mais assistência, entre em contato com o fornecedor do 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.