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

Request

ページがネットワークリソースのリクエストを送信するたびに、Page によって以下のイベントシーケンスが発行されます。

  • ページがリクエストを発行したときに page.on("request") が発行されます。
  • リクエストのレスポンスステータスとヘッダーが受信されたときに page.on("response") が発行されます。
  • レスポンスボディがダウンロードされ、リクエストが完了したときに page.on("requestfinished") が発行されます。

ある時点でリクエストが失敗した場合、'requestfinished' イベント(および場合によっては 'response' イベント)の代わりに page.on("requestfailed") イベントが発行されます。

404や503のようなHTTPエラー応答は、HTTPの観点からは依然として成功した応答であるため、リクエストは`'requestfinished'`イベントで完了します。

リクエストが「リダイレクト」応答を受け取ると、リクエストは`requestfinished`イベントで正常に完了し、リダイレクトされたURLに新しいリクエストが発行されます。


メソッド

all_headers

追加されたバージョン: v1.15 request.all_headers

このリクエストに関連付けられたすべてのリクエストHTTPヘッダーを含むオブジェクトです。ヘッダー名は小文字に変換されます。

使用法

request.all_headers()

戻り値


header_value

追加されたバージョン: v1.15 request.header_value

名前に一致するヘッダーの値を返します。名前は大文字と小文字を区別しません。

使用法

request.header_value(name)

引数

  • name str#

    ヘッダー名。

戻り値


headers_array

追加されたバージョン: v1.15 request.headers_array

このリクエストに関連付けられているすべてのHTTPリクエストヘッダーを含む配列。 request.all_headers() とは異なり、ヘッダー名は大文字小文字を区別しません。Set-Cookie のように複数のエントリを持つヘッダーは、配列内に複数回表示されます。

使用法

request.headers_array()

戻り値


response

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

一致する Response オブジェクトを返します。エラーのためにレスポンスが受信されなかった場合は null を返します。

使用法

request.response()

戻り値


sizes

追加されたバージョン: v1.15 request.sizes

指定されたリクエストのリソースサイズ情報を返します。

使用法

request.sizes()

戻り値

  • Dict#
    • requestBodySize int

      リクエストボディ (POSTデータペイロード) のサイズ (バイト単位)。ボディがない場合は0に設定されます。

    • requestHeadersSize int

      HTTPリクエストメッセージの先頭からボディの前の二重CRLFまで (含む) の合計バイト数。

    • responseBodySize int

      受信した応答ボディ (エンコード済み) のサイズ (バイト単位)。

    • responseHeadersSize int

      HTTP応答メッセージの先頭からボディの前の二重CRLFまで (含む) の合計バイト数。


プロパティ

failure

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

`requestfailed`イベントで報告されたように、このリクエストが失敗していない限り、このメソッドは`null`を返します。

使用法

失敗したすべてのリクエストのログ記録の例

page.on("requestfailed", lambda request: print(request.url + " " + request.failure))

戻り値


frame

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

このリクエストを開始した Frame を返します。

使用法

frame_url = request.frame.url

戻り値

詳細

場合によってはフレームが利用できない場合があり、このメソッドはエラーをスローします。

  • Service Workerでリクエストが発生した場合。`request.serviceWorker()`を使って確認できます。
  • ナビゲーションリクエストは、対応するフレームが作成される前に発行されます。これをチェックするには、request.is_navigation_request() を使用できます。

すべてのケースを処理する例を以下に示します


headers

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

リクエストHTTPヘッダーを含むオブジェクト。ヘッダー名は小文字です。このメソッドは、Cookie関連のヘッダーを含むセキュリティ関連のヘッダーを返さないことに注意してください。cookie 情報を含むヘッダーの完全なリストについては、request.all_headers() を使用できます。

使用法

request.headers

戻り値


is_navigation_request

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

このリクエストがフレームのナビゲーションを駆動しているかどうか。

一部のナビゲーションリクエストは、対応するフレームが作成される前に発行されるため、request.frame が利用できません。

使用法

request.is_navigation_request()

戻り値


method

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

リクエストのメソッド (GET、POSTなど)

使用法

request.method

戻り値


post_data

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

リクエストのPOSTボディ (存在する場合)。

使用法

request.post_data

戻り値


post_data_buffer

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

リクエストのPOSTボディをバイナリ形式で (存在する場合)。

使用法

request.post_data_buffer

戻り値


post_data_json

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

`form-urlencoded`と、フォールバックとしてJSONの解析済みリクエストボディを返します (存在する場合)。

応答が`application/x-www-form-urlencoded`の場合、値のキー/値オブジェクトが返されます。それ以外の場合はJSONとして解析されます。

使用法

request.post_data_json

戻り値


redirected_from

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

サーバーによってこのリクエストにリダイレクトされたリクエスト (存在する場合)。

サーバーがリダイレクトで応答すると、Playwright は新しい Request オブジェクトを作成します。2つのリクエストは redirectedFrom()redirectedTo() メソッドによって接続されます。複数のサーバーリダイレクトが発生した場合、redirectedFrom() を繰り返し呼び出すことで、完全なリダイレクトチェーンを構築できます。

使用法

例えば、ウェブサイト`http://example.com`が`https://example.com`にリダイレクトする場合

response = page.goto("http://example.com")
print(response.request.redirected_from.url) # "http://example.com"

ウェブサイト`https://google.com`にリダイレクトがない場合

response = page.goto("https://google.com")
print(response.request.redirected_from) # None

戻り値


redirected_to

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

サーバーがリダイレクトで応答した場合にブラウザによって発行された新しいリクエスト。

使用法

このメソッドは request.redirected_from の反対です。

assert request.redirected_from.redirected_to == request

戻り値


resource_type

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

レンダリングエンジンが認識したリクエストのリソースタイプが含まれています。ResourceTypeは以下のいずれかになります: `document`、`stylesheet`、`image`、`media`、`font`、`script`、`texttrack`、`xhr`、`fetch`、`eventsource`、`websocket`、`manifest`、`other`。

使用法

request.resource_type

戻り値


timing

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

指定されたリクエストのリソースタイミング情報を返します。ほとんどのタイミング値は応答時に利用可能になり、`responseEnd`はリクエストが終了したときに利用可能になります。Resource Timing APIで詳細を確認してください。

使用法

with page.expect_event("requestfinished") as request_info:
page.goto("http://example.com")
request = request_info.value
print(request.timing)

戻り値

  • Dict#
    • startTime float

      1970年1月1日00:00:00 UTCからの経過ミリ秒単位のリクエスト開始時刻

    • domainLookupStart float

      ブラウザがリソースのドメイン名ルックアップを開始する直前の時間。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。

    • domainLookupEnd float

      ブラウザがリソースのドメイン名ルックアップを開始した直後の時間。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。

    • connectStart float

      ユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。

    • secureConnectionStart float

      ブラウザが現在の接続を保護するためにハンドシェイクプロセスを開始する直前の時間。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。

    • connectEnd float

      ユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。

    • requestStart float

      ブラウザがサーバー、キャッシュ、またはローカルリソースからリソースをリクエストし始める直前の時間。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。

    • responseStart float

      ブラウザがサーバー、キャッシュ、またはローカルリソースから応答の最初のバイトを受信した直後の時間。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。

    • responseEnd float

      ブラウザがリソースの最後のバイトを受信した直後、またはトランスポート接続が閉じる直前の時間のいずれか早い方。値は`startTime`からの相対ミリ秒単位で与えられます。利用できない場合は-1。


url

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

リクエストのURL。

使用法

request.url

戻り値