プロキシのホスト名は、表示形式に国際的な文字を含むことがあります。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 アドレスに置き換えると、接続の別の部分が変わってしまいます。

関連記事