リクエストは、プロキシ用ハンドラーから構築した HttpClient を使う必要があります。無関係な WebProxy オブジェクトを作っても、別のクライアントの経路は変わりません。

using System;
using System.Net;
using System.Net.Http;

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    BypassProxyOnLocal = false
};

using var handler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};

using var client = new HttpClient(handler)
{
    Timeout = TimeSpan.FromSeconds(15)
};

using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());

文書用アドレスを、サービスが提供する実際のHTTPプロキシかHTTPプロキシ一覧の候補に置き換えてください。このトップレベル構文は現在のC#コンソールプロジェクト向けです。古いプロジェクトでは非同期の Main に文を入れられます。

ハンドラーの両方のプロパティを確認します。Proxy が接続先を選び、UseProxy=true がその使用を有効にします。接続先が単独では動くのにアプリで動かない場合、UseProxy を無効にするコードがなく、呼び出しがこのインスタンスを使っていることを確認してください。専用ハンドラーなら、プロセスやOSによる検出に依存せずに済みます。

プロキシ運営者からアカウントを提供されたら、NetworkCredential を WebProxy.Credentials プロパティに設定します。WebサイトのAuthorizationは別の通信段階用であり、公開IP:portの項目に既定のログイン情報はありません。http:// の待受先はトンネルでHTTPSを運べます。通常の接続先検証は維持してください。

この短いプログラムは終了時にオブジェクトを破棄します。サービスから繰り返し呼び出す場合は.NETのクライアント寿命の指針に従い、リクエストごとに接続プールを作り直さず、処理に応じてクライアントとハンドラーを保持します。返されたステータスも確認してください。プロキシ経路が正常でも、Webサイトの拒否応答は返り得ます。

関連記事