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

Route

page.route() または browserContext.route() でネットワークルートが設定されるたびに、Route オブジェクトはルートを処理することを可能にします。

ネットワークの詳細をご覧ください。


メソッド

abort

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

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

使用法

await route.abort();
await route.abort(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' - 一般的なエラーが発生しました。

戻り値


continue

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

オプションのオーバーライドを使用して、ルートのリクエストをネットワークに送信します。

使用法

await page.route('**/*', async (route, request) => {
// Override headers
const headers = {
...request.headers(),
foo: 'foo-value', // set "foo" header
bar: undefined, // remove "bar" header
};
await route.continue({ headers });
});

引数

  • options Object (オプション)
    • headers Object<string, string> (オプション)#

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

    • method string (オプション)#

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

    • postData string | Buffer | Serializable (オプション)#

      設定した場合、リクエストのポストデータを変更します。

    • url string (オプション)#

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

戻り値

詳細

headers オプションは、ルーティングされたリクエストと、それが開始するリダイレクトの両方に適用されます。ただし、urlmethod、および postData は、最初のリクエストにのみ適用され、リダイレクトされたリクエストには引き継がれません。

route.continue() は、リクエストをすぐにネットワークに送信し、他のマッチングハンドラーは呼び出されません。route.fallback() を使用して、チェーン内の次のマッチングハンドラーを呼び出すようにしてください。


fallback

v1.23で追加 route.fallback

オプションのオーバーライドを使用して、ルートのリクエストを継続します。このメソッドは route.continue() に似ていますが、リクエストを送信する前に、他のマッチングハンドラーが呼び出される点が異なります。

使用法

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

await page.route('**/*', async route => {
// Runs last.
await route.abort();
});
await page.route('**/*', async route => {
// Runs second.
await route.fallback();
});
await page.route('**/*', async route => {
// Runs first.
await route.fallback();
});

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

// Handle GET requests.
await page.route('**/*', async route => {
if (route.request().method() !== 'GET') {
await route.fallback();
return;
}
// Handling GET only.
// ...
});

// Handle POST requests.
await page.route('**/*', async route => {
if (route.request().method() !== 'POST') {
await route.fallback();
return;
}
// Handling POST only.
// ...
});

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

await page.route('**/*', async (route, request) => {
// Override headers
const headers = {
...request.headers(),
foo: 'foo-value', // set "foo" header
bar: undefined, // remove "bar" header
};
await route.fallback({ headers });
});

route.continue() を使用して、リクエストをすぐにネットワークに送信します。その場合、他のマッチングハンドラーは呼び出されません。

引数

  • options Object (オプション)
    • headers Object<string, string> (オプション)#

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

    • method string (オプション)#

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

    • postData string | Buffer | Serializable (オプション)#

      設定した場合、リクエストのポストデータを変更します。

    • url string (オプション)#

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

戻り値


fetch

v1.29で追加 route.fetch

レスポンスを変更してフルフィルできるように、リクエストを実行して結果を取得します(ただし、フルフィルはしません)。

使用法

await page.route('https://dog.ceo/api/breeds/list/all', async route => {
const response = await route.fetch();
const json = await response.json();
json.message['big_red_dog'] = [];
await route.fulfill({ response, json });
});

引数

  • options Object (オプション)
    • headers Object<string, string> (オプション)#

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

    • maxRedirects number (オプション)v1.31で追加#

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

    • maxRetries number (オプション)v1.46で追加#

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

    • method string (オプション)#

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

    • postData string | Buffer | Serializable (オプション)#

      リクエストのポストデータを設定できます。data パラメーターがオブジェクトの場合、JSON 文字列にシリアライズされ、content-type ヘッダーが明示的に設定されていない場合は application/json に設定されます。それ以外の場合、content-type ヘッダーが明示的に設定されていない場合は application/octet-stream に設定されます。

    • timeout number (オプション)v1.33で追加#

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

    • url string (オプション)#

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

戻り値

詳細

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


fulfill

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

指定されたレスポンスでルートのリクエストをフルフィルします。

使用法

すべてのリクエストを 404 レスポンスでフルフィルする例

await page.route('**/*', async route => {
await route.fulfill({
status: 404,
contentType: 'text/plain',
body: 'Not Found!'
});
});

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

await page.route('**/xhr_endpoint', route => route.fulfill({ path: 'mock_data.json' }));

引数

  • options Object (オプション)
    • body string | Buffer (オプション)#

      レスポンスボディ。

    • contentType string (オプション)#

      設定した場合、Content-Type レスポンスヘッダーの設定と同じです。

    • headers Object<string, string> (オプション)#

      レスポンスヘッダー。ヘッダーの値は文字列に変換されます。

    • json Serializable (オプション)v1.29で追加#

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

    • path string (オプション)#

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

    • response APIResponse (オプション)v1.15で追加#

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

    • status number (オプション)#

      レスポンスステータスコード。デフォルトは 200 です。

戻り値


request

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

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

使用法

route.request();

戻り値