Пишете обхождащи записи на WebProxy като регулярни изрази
Изградете валиден израз за обход на System.Net.WebProxy с екранирани точки и ясни граници на името на хоста вместо заместващ знак в стил шел.
Аргументът BypassList на System.Net.WebProxy съдържа регулярни изрази. Шаблон като *.office.example е невалиден, защото водещата звездичка няма предходен израз, който да повтаря.
За HTTP и HTTPS заявки към office.example и неговите поддомейни конфигурация на PowerShell може да използва:
$bypass = @('^https?://([a-z0-9-]+\.)*office\.example(:[0-9]+)?$')
$proxy = [System.Net.WebProxy]::new(
'http://proxy.example:8080',
$false,
[string[]]$bypass
)
Екранираните точки съвпадат с литерални точки. Повтарящата се група за етикет на име на хост допуска както основния домейн, така и имената под него. Котвите държат име като office.example.other.test извън това правило. Низовете на PowerShell в единични кавички запазват обратните наклонени черти, използвани от израза.
Текущата реализация на .NET съпоставя тези изрази със схемата на дестинацията, името на хоста и нестандартния порт. Тя не включва пътя на заявката или низа на заявката. Затова незадължителната група за порт допуска и нестандартни портове; премахнете я или я стеснете, ако политиката изисква конкретна услуга.
BypassProxyOnLocal е false в този пример, така че regex политиката да може да се прегледа отделно от тази допълнителна настройка за обход. Прикачете получения прокси обект към HTTP клиента, който трябва да го използва. За разрешен тест на публичен URL извън домейна за обход, HTTP запис от HTTP proxy list може да предостави своя адрес, без конфигуриран прокси акаунт.
Използвайте IsBypassed с представителни стойности Uri, за да прегледате решението за маршрутизиране: основния домейн, един поддомейн, несвързан външен хост и подвеждащ по-дълъг суфикс. Резултат true означава, че е избран директен достъп; той не доказва, че директната дестинация е достъпна.