メインコンテンツにスキップ

Route

Page.RouteAsync() または BrowserContext.RouteAsync() でネットワークルートが設定されるたびに、Route オブジェクトはルートを処理できます。

ネットワークについて詳しくはこちらをご覧ください。


メソッド

AbortAsync

v1.9より前に追加 route.AbortAsync

ルートのリクエストを中止します。

使用法

await Route.AbortAsync(errorCode);

引数

  • errorCode string? (任意)#

    オプションのエラーコード。デフォルトは failed で、以下のいずれかになります。

    • 'aborted' - 操作が中止されました(ユーザーアクションによる)
    • 'accessdenied' - ネットワーク以外のリソースへのアクセスが拒否されました
    • 'addressunreachable' - IPアドレスに到達できません。これは通常、指定されたホストまたはネットワークへのルートがないことを意味します。
    • 'blockedbyclient' - クライアントがリクエストをブロックすることを選択しました。
    • 'blockedbyresponse' - レスポンスが要件(例:'X-Frame-Options' や 'Content-Security-Policy' の祖先チェック)を満たさなかったため、リクエストが失敗しました。
    • 'connectionaborted' - 送信されたデータのACKを受信しなかった結果、接続がタイムアウトしました。
    • 'connectionclosed' - 接続が閉じられました(TCP FINに相当)。
    • 'connectionfailed' - 接続試行が失敗しました。
    • 'connectionrefused' - 接続試行が拒否されました。
    • 'connectionreset' - 接続がリセットされました(TCP RSTに相当)。
    • 'internetdisconnected' - インターネット接続が失われました。
    • 'namenotresolved' - ホスト名を解決できませんでした。
    • 'timedout' - 操作がタイムアウトしました。
    • 'failed' - 一般的な障害が発生しました。

戻り値


ContinueAsync

v1.9より前に追加 route.ContinueAsync

オプションの上書きを用いて、ルートのリクエストをネットワークに送信します。

使用法

await page.RouteAsync("**/*", async route =>
{
var headers = new Dictionary<string, string>(route.Request.Headers) { { "foo", "bar" } };
headers.Remove("origin");
await route.ContinueAsync(new() { Headers = headers });
});

引数

  • options RouteContinueOptions? (任意)
    • Headers IDictionary?<string, string> (任意)#

      設定されている場合、リクエストHTTPヘッダーを変更します。ヘッダー値は文字列に変換されます。

    • Method string? (任意)#

      設定されている場合、リクエストメソッド(例:GETまたはPOST)を変更します。

    • PostData byte[]? (任意)#

      設定されている場合、リクエストのPOSTデータを変更します。

    • Url string? (任意)#

      設定されている場合、リクエストURLを変更します。新しいURLは元のURLと同じプロトコルである必要があります。

戻り値

詳細

Headers オプションは、ルーティングされたリクエストとそのリダイレクトの両方に適用されます。ただし、UrlMethodPostData は元のリクエストにのみ適用され、リダイレクトされたリクエストには引き継がれません。

Route.ContinueAsync() はリクエストをネットワークに即座に送信し、他の一致するハンドラは呼び出されません。チェーン内の次に一致するハンドラを呼び出したい場合は、Route.FallbackAsync() を使用してください。

警告

このメソッドでは Cookie ヘッダーをオーバーライドすることはできません。値が指定された場合、それは無視され、Cookie はブラウザの Cookie ストアから読み込まれます。カスタム Cookie を設定するには、BrowserContext.AddCookiesAsync() を使用してください。


FallbackAsync

追加日: v1.23 route.FallbackAsync

オプションのオーバーライドでルートのリクエストを続行します。このメソッドは Route.ContinueAsync() に似ていますが、リクエストを送信する前に他の一致するハンドラが呼び出される点が異なります。

使用法

与えられたパターンに複数のルートが一致する場合、それらは登録とは逆の順序で実行されます。これにより、最後に登録されたルートが常に以前のすべてのルートを上書きできます。以下の例では、リクエストはまず一番下のハンドラーによって処理され、次に前のハンドラーにフォールバックし、最終的には最初に登録されたルートによって中止されます。

await page.RouteAsync("**/*", route => {
// Runs last.
await route.AbortAsync();
});

await page.RouteAsync("**/*", route => {
// Runs second.
await route.FallbackAsync();
});

await page.RouteAsync("**/*", route => {
// Runs first.
await route.FallbackAsync();
});

複数のルートを登録することは、API呼び出しとページリソース、または以下の例のようにGETリクエストとPOSTリクエストなど、異なる種類のリクエストを異なるハンドラーで処理したい場合に役立ちます。

// Handle GET requests.
await page.RouteAsync("**/*", route => {
if (route.Request.Method != "GET") {
await route.FallbackAsync();
return;
}
// Handling GET only.
// ...
});

// Handle POST requests.
await page.RouteAsync("**/*", route => {
if (route.Request.Method != "POST") {
await route.FallbackAsync();
return;
}
// Handling POST only.
// ...
});

後続のハンドラーにフォールバックしながらリクエストを変更することもできます。これにより、中間ルートハンドラーはリクエストのURL、メソッド、ヘッダー、およびpostDataを変更できます。

await page.RouteAsync("**/*", async route =>
{
var headers = new Dictionary<string, string>(route.Request.Headers) { { "foo", "foo-value" } };
headers.Remove("bar");
await route.FallbackAsync(new() { Headers = headers });
});

Route.ContinueAsync() を使用すると、リクエストはネットワークに即座に送信され、その場合は他の一致するハンドラは呼び出されません。

引数

  • options RouteFallbackOptions? (任意)
    • Headers IDictionary?<string, string> (任意)#

      設定されている場合、リクエストHTTPヘッダーを変更します。ヘッダー値は文字列に変換されます。

    • Method string? (任意)#

      設定されている場合、リクエストメソッド(例:GETまたはPOST)を変更します。

    • PostData byte[]? (任意)#

      設定されている場合、リクエストのPOSTデータを変更します。

    • Url string? (任意)#

      設定されている場合、リクエストURLを変更します。新しいURLは元のURLと同じプロトコルである必要があります。URLを変更してもルートのマッチングには影響しません。すべてのルートは元のリクエストURLを使用してマッチされます。

戻り値


FetchAsync

追加: v1.29 route.FetchAsync

リクエストを実行し、応答を変更して満たすことができるように、応答を満たさずに結果を取得します。

使用法

await page.RouteAsync("https://dog.ceo/api/breeds/list/all", async route =>
{
var response = await route.FetchAsync();
dynamic json = await response.JsonAsync();
json.message.big_red_dog = new string[] {};
await route.FulfillAsync(new() { Response = response, Json = json });
});

引数

  • options RouteFetchOptions? (任意)
    • Headers IDictionary?<string, string> (任意)#

      設定されている場合、リクエストHTTPヘッダーを変更します。ヘッダー値は文字列に変換されます。

    • MaxRedirects int? (任意)追加バージョン: v1.31#

      自動的にフォローされるリクエストのリダイレクトの最大数。この数を超えるとエラーがスローされます。デフォルトは 20 です。リダイレクトをフォローしない場合は 0 を渡します。

    • MaxRetries int? (任意)追加バージョン: v1.46#

      ネットワークエラーが再試行される最大回数。現在、ECONNRESET エラーのみが再試行されます。HTTP応答コードに基づく再試行は行われません。制限を超えるとエラーがスローされます。デフォルトは 0 (再試行なし) です。

    • Method string? (任意)#

      設定されている場合、リクエストメソッド(例:GETまたはPOST)を変更します。

    • PostData byte[]? (任意)#

      設定されている場合、リクエストのPOSTデータを変更します。

    • Timeout [float]? (任意)追加バージョン: v1.33#

      リクエストのタイムアウト(ミリ秒単位)。デフォルトは 30000(30秒)です。タイムアウトを無効にするには 0 を渡します。

    • Url string? (任意)#

      設定されている場合、リクエストURLを変更します。新しいURLは元のURLと同じプロトコルである必要があります。

戻り値

詳細

Headers オプションは、フェッチされたリクエストと、それによって開始されるすべてのリダイレクトに適用されることに注意してください。Headers を元のリクエストにのみ適用し、リダイレクトには適用しない場合は、代わりに Route.ContinueAsync() を検討してください。


FulfillAsync

v1.9より前に追加 route.FulfillAsync

指定された応答でルートのリクエストを満たします。

使用法

すべてのリクエストを404応答で満たす例

await page.RouteAsync("**/*", route => route.FulfillAsync(new ()
{
Status = 404,
ContentType = "text/plain",
Body = "Not Found!"
}));

静的ファイルを提供する例

await page.RouteAsync("**/xhr_endpoint", route => route.FulfillAsync(new() { Path = "mock_data.json" }));

引数

  • options RouteFulfillOptions? (任意)
    • Body string? (任意)#

      テキストとしてのオプションのレスポンスボディ。

    • BodyBytes byte[]? (任意)追加バージョン: v1.9#

      生のバイトとしてのオプションのレスポンスボディ。

    • ContentType string? (任意)#

      設定されている場合、Content-Type 応答ヘッダーの設定と同じです。

    • Headers IDictionary?<string, string> (任意)#

      応答ヘッダー。ヘッダー値は文字列に変換されます。

    • Json [object]? (任意)追加: v1.29#

      JSON応答。このメソッドは、設定されていない場合、コンテンツタイプを application/json に設定します。

    • Path string? (任意)#

      応答するファイルのパス。コンテンツタイプはファイル拡張子から推測されます。path が相対パスの場合、現在の作業ディレクトリを基準に解決されます。

    • Response APIResponse? (任意)追加されたバージョン: v1.15#

      ルートのリクエストを満たす APIResponse。レスポンスの個々のフィールド (ヘッダーなど) は、fulfill オプションを使用してオーバーライドできます。

    • Status int? (任意)#

      応答ステータスコード。デフォルトは 200 です。

戻り値


Request

v1.9より前に追加 route.Request

ルーティングされるリクエスト。

使用法

Route.Request

戻り値