2025-11-05 17:04:23 -03:00

252 lines
11 KiB
Plaintext

# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Contributing to Chrome DevTools Protocol: https://goo.gle/devtools-contribution-guide-cdp
# A domain for letting clients substitute browser's network layer with client code.
domain Fetch
depends on Network
depends on IO
depends on Page
# Unique request identifier.
# Note that this does not identify individual HTTP requests that are part of
# a network request.
type RequestId extends string
# Stages of the request to handle. Request will intercept before the request is
# sent. Response will intercept after the response is received (but before response
# body is received).
type RequestStage extends string
enum
Request
Response
type RequestPattern extends object
properties
# Wildcards (`'*'` -> zero or more, `'?'` -> exactly one) are allowed. Escape character is
# backslash. Omitting is equivalent to `"*"`.
optional string urlPattern
# If set, only requests for matching resource types will be intercepted.
optional Network.ResourceType resourceType
# Stage at which to begin intercepting requests. Default is Request.
optional RequestStage requestStage
# Response HTTP header entry
type HeaderEntry extends object
properties
string name
string value
# Authorization challenge for HTTP status code 401 or 407.
type AuthChallenge extends object
properties
# Source of the authentication challenge.
optional enum source
Server
Proxy
# Origin of the challenger.
string origin
# The authentication scheme used, such as basic or digest
string scheme
# The realm of the challenge. May be empty.
string realm
# Response to an AuthChallenge.
type AuthChallengeResponse extends object
properties
# The decision on what to do in response to the authorization challenge. Default means
# deferring to the default behavior of the net stack, which will likely either the Cancel
# authentication or display a popup dialog box.
enum response
Default
CancelAuth
ProvideCredentials
# The username to provide, possibly empty. Should only be set if response is
# ProvideCredentials.
optional string username
# The password to provide, possibly empty. Should only be set if response is
# ProvideCredentials.
optional string password
# Disables the fetch domain.
command disable
# Enables issuing of requestPaused events. A request will be paused until client
# calls one of failRequest, fulfillRequest or continueRequest/continueWithAuth.
command enable
parameters
# If specified, only requests matching any of these patterns will produce
# fetchRequested event and will be paused until clients response. If not set,
# all requests will be affected.
optional array of RequestPattern patterns
# If true, authRequired events will be issued and requests will be paused
# expecting a call to continueWithAuth.
optional boolean handleAuthRequests
# Causes the request to fail with specified reason.
command failRequest
parameters
# An id the client received in requestPaused event.
RequestId requestId
# Causes the request to fail with the given reason.
Network.ErrorReason errorReason
# Provides response to the request.
command fulfillRequest
parameters
# An id the client received in requestPaused event.
RequestId requestId
# An HTTP response code.
integer responseCode
# Response headers.
optional array of HeaderEntry responseHeaders
# Alternative way of specifying response headers as a \0-separated
# series of name: value pairs. Prefer the above method unless you
# need to represent some non-UTF8 values that can't be transmitted
# over the protocol as text.
optional binary binaryResponseHeaders
# A response body. If absent, original response body will be used if
# the request is intercepted at the response stage and empty body
# will be used if the request is intercepted at the request stage.
optional binary body
# A textual representation of responseCode.
# If absent, a standard phrase matching responseCode is used.
optional string responsePhrase
# Continues the request, optionally modifying some of its parameters.
command continueRequest
parameters
# An id the client received in requestPaused event.
RequestId requestId
# If set, the request url will be modified in a way that's not observable by page.
optional string url
# If set, the request method is overridden.
optional string method
# If set, overrides the post data in the request.
optional binary postData
# If set, overrides the request headers. Note that the overrides do not
# extend to subsequent redirect hops, if a redirect happens. Another override
# may be applied to a different request produced by a redirect.
optional array of HeaderEntry headers
# If set, overrides response interception behavior for this request.
experimental optional boolean interceptResponse
# Continues a request supplying authChallengeResponse following authRequired event.
command continueWithAuth
parameters
# An id the client received in authRequired event.
RequestId requestId
# Response to with an authChallenge.
AuthChallengeResponse authChallengeResponse
# Continues loading of the paused response, optionally modifying the
# response headers. If either responseCode or headers are modified, all of them
# must be present.
experimental command continueResponse
parameters
# An id the client received in requestPaused event.
RequestId requestId
# An HTTP response code. If absent, original response code will be used.
optional integer responseCode
# A textual representation of responseCode.
# If absent, a standard phrase matching responseCode is used.
optional string responsePhrase
# Response headers. If absent, original response headers will be used.
optional array of HeaderEntry responseHeaders
# Alternative way of specifying response headers as a \0-separated
# series of name: value pairs. Prefer the above method unless you
# need to represent some non-UTF8 values that can't be transmitted
# over the protocol as text.
optional binary binaryResponseHeaders
# Causes the body of the response to be received from the server and
# returned as a single string. May only be issued for a request that
# is paused in the Response stage and is mutually exclusive with
# takeResponseBodyForInterceptionAsStream. Calling other methods that
# affect the request or disabling fetch domain before body is received
# results in an undefined behavior.
# Note that the response body is not available for redirects. Requests
# paused in the _redirect received_ state may be differentiated by
# `responseCode` and presence of `location` response header, see
# comments to `requestPaused` for details.
command getResponseBody
parameters
# Identifier for the intercepted request to get body for.
RequestId requestId
returns
# Response body.
string body
# True, if content was sent as base64.
boolean base64Encoded
# Returns a handle to the stream representing the response body.
# The request must be paused in the HeadersReceived stage.
# Note that after this command the request can't be continued
# as is -- client either needs to cancel it or to provide the
# response body.
# The stream only supports sequential read, IO.read will fail if the position
# is specified.
# This method is mutually exclusive with getResponseBody.
# Calling other methods that affect the request or disabling fetch
# domain before body is received results in an undefined behavior.
command takeResponseBodyAsStream
parameters
RequestId requestId
returns
IO.StreamHandle stream
# Issued when the domain is enabled and the request URL matches the
# specified filter. The request is paused until the client responds
# with one of continueRequest, failRequest or fulfillRequest.
# The stage of the request can be determined by presence of responseErrorReason
# and responseStatusCode -- the request is at the response stage if either
# of these fields is present and in the request stage otherwise.
# Redirect responses and subsequent requests are reported similarly to regular
# responses and requests. Redirect responses may be distinguished by the value
# of `responseStatusCode` (which is one of 301, 302, 303, 307, 308) along with
# presence of the `location` header. Requests resulting from a redirect will
# have `redirectedRequestId` field set.
event requestPaused
parameters
# Each request the page makes will have a unique id.
RequestId requestId
# The details of the request.
Network.Request request
# The id of the frame that initiated the request.
Page.FrameId frameId
# How the requested resource will be used.
Network.ResourceType resourceType
# Response error if intercepted at response stage.
optional Network.ErrorReason responseErrorReason
# Response code if intercepted at response stage.
optional integer responseStatusCode
# Response status text if intercepted at response stage.
optional string responseStatusText
# Response headers if intercepted at the response stage.
optional array of HeaderEntry responseHeaders
# If the intercepted request had a corresponding Network.requestWillBeSent event fired for it,
# then this networkId will be the same as the requestId present in the requestWillBeSent event.
optional Network.RequestId networkId
# If the request is due to a redirect response from the server, the id of the request that
# has caused the redirect.
experimental optional RequestId redirectedRequestId
# Issued when the domain is enabled with handleAuthRequests set to true.
# The request is paused until client responds with continueWithAuth.
event authRequired
parameters
# Each request the page makes will have a unique id.
RequestId requestId
# The details of the request.
Network.Request request
# The id of the frame that initiated the request.
Page.FrameId frameId
# How the requested resource will be used.
Network.ResourceType resourceType
# Details of the Authorization Challenge encountered.
# If this is set, client should respond with continueRequest that
# contains AuthChallengeResponse.
AuthChallenge authChallenge