URI はホストの前に username:password を含むことがあります。だからといって、その URI を受け取るすべての .NET API がユーザー情報を認証オブジェクトへコピーするわけではありません。

WebProxy を直接構築するときは、資格情報の割り当てを明示してください:

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    Credentials = new NetworkCredential(proxyUser, proxyPassword)
};

エンドポイントとアカウントの変数は例示です。これにより、宛先アドレス、プロキシ アドレス、プロキシ アカウントが分離されます。

入力形式が資格情報を含む URL を渡す場合は、そのユーザー情報を意図的に解析してください。コロンを含むパスワードは、資格情報の区切り文字だけで分割して保持し、エンコードされた要素は適切な段階でデコードします。そのパーサーを診断するときに元の URL を出力しないでください。

環境設定として機能するプロキシ URL でも、別のコンストラクターに渡すと動作が変わる可能性があります。環境プロキシの初期化には独自の解析ロジックがあり、すべてのコンストラクターが同じフィールドを使うという保証ではありません。

最後に、要求を実行するハンドラーに構成済みのプロキシ オブジェクトを設定します。使われていない WebProxy 上の正しい資格情報は接続に影響しません。

関連記事