Имя хоста прокси может содержать международные символы в отображаемой форме. Клиенту или распознавателю, ожидающему форму IDNA ASCII, нужно преобразованное имя хоста, а не произвольная копия всего URL с процентным экранированием.

В PowerShell .NET предоставляет преобразование напрямую:

$mapping = New-Object System.Globalization.IdnMapping
$asciiHost = $mapping.GetAscii($unicodeProxyHost)
$endpoint = New-Object System.UriBuilder
$endpoint.Scheme = 'http'
$endpoint.Host = $asciiHost
$endpoint.Port = 8080

$proxy = New-Object System.Net.WebProxy($endpoint.Uri)

unicodeProxyHost — это только доменное имя. Порт и схема остаются отдельно. Используйте полученный прокси в HTTP-клиенте, который выполняет запрос.

Для уже разобранного Uri IdnHost предоставляет совместимое с IDNA представление имени хоста. Проверьте исходную конечную точку вместо многократного кодирования уже закодированной метки.

В ошибке разрешения отличайте имя хоста прокси от имени хоста назначения. Преобразование одного не исправляет опечатку или отсутствующую запись DNS у другого. Сохраняйте предполагаемое имя хоста и для идентификации сертификата; замена его произвольным IP-адресом меняет другую часть соединения.

Похожие статьи