HttpClientRequester を使った AngleSharp.Io のプロキシ設定
既定のローダーを有効にする前に、プロキシ対応の HttpClientRequester を 1 つアタッチします。
AngleSharp のローダーはダウンロードを登録済みのリクエスターに委譲します。AngleSharp.Io では、プロキシ対応の HttpClientRequester を明示的にアタッチします:
using AngleSharp;
using AngleSharp.Io.Network;
var handler = new System.Net.Http.HttpClientHandler
{
UseProxy = true,
Proxy = new System.Net.WebProxy(
"http://proxy.example.net:8080")
};
var http = new System.Net.Http.HttpClient(handler);
http.DefaultRequestHeaders.UserAgent.ParseAdd("ExampleReader/1.0");
var configuration = Configuration.Default
.With(new HttpClientRequester(http))
.WithDefaultLoader();
var context = BrowsingContext.New(configuration);このコンテキストは意図した OpenAsync ナビゲーションに使います。HTTP プロキシ一覧のエンドポイントから、公開ウェブのダウンロード用に WebProxy アドレスを提供できます。その処理の間は基になる HTTP クライアントを生かしておき、後で所有リソースを破棄します。
WithRequesters は AngleSharp.Io で利用できるリクエスターを登録する別の方法です。意図的な選択でない限り、手動で構成した複数の HTTP リクエスターと組み合わせないでください。あるリクエスターに構成したプロキシは、要求のために選ばれる別の実装を構成するものではありません。
http 上のカスタム既定ヘッダーは送信先の要求に属します。Content-Type を含め、要求本文を説明するヘッダー値は、すべてのダウンロードにグローバルに強制するのではなく、その要求に合わせる必要があります。
リクエスターは WithDefaultLoader より前に登録してください。そうすればローダーは既定のサービスを追加する代わりに、意図した HTTP サービスを使えます。