O argumento BypassList de System.Net.WebProxy contém expressões regulares. Um padrão como *.office.example é inválido porque o asterisco inicial não tem expressão anterior para repetir.

Para solicitações HTTP e HTTPS a office.example e seus subdomínios, uma configuração do PowerShell pode usar:

$bypass = @('^https?://([a-z0-9-]+\.)*office\.example(:[0-9]+)?$')
$proxy = [System.Net.WebProxy]::new(
    'http://proxy.example:8080',
    $false,
    [string[]]$bypass
)

Os pontos escapados correspondem a pontos literais. O grupo repetido de rótulo de nome de host admite tanto o domínio base quanto os nomes abaixo dele. As âncoras mantêm um nome como office.example.other.test fora desta regra. As cadeias do PowerShell entre aspas simples preservam as barras invertidas usadas pela expressão.

A implementação atual do .NET compara essas expressões com o esquema, o nome de host e a porta não padrão do destino. Ela não inclui o caminho da solicitação nem a cadeia de consulta. Por isso o grupo de porta opcional também permite portas não padrão; remova-o ou restrinja-o se a política exigir um serviço específico.

BypassProxyOnLocal é false neste exemplo para que a política de expressão regular possa ser inspecionada separadamente dessa configuração adicional de exceção. Anexe o objeto de proxy resultante ao cliente HTTP que deve usá-lo. Para um teste permitido de URL pública fora do domínio de exceção, uma entrada HTTP da HTTP proxy list pode fornecer o endereço, sem uma conta de proxy configurada.

Use IsBypassed com valores Uri representativos para inspecionar a decisão de roteamento: o domínio base, um subdomínio, um host externo não relacionado e um sufixo mais longo enganoso. Um resultado true significa que o acesso direto foi escolhido; ele não prova que o destino direto seja alcançável.

Artigos relacionados