puppeteer-interceptor
Version:
Makes intercepting and modifying traffic from Puppeteer easier
49 lines (48 loc) • 1.99 kB
TypeScript
import Protocol from 'devtools-protocol';
import { Page } from 'puppeteer/lib/cjs/puppeteer/common/Page';
import { CDPSession } from 'puppeteer/lib/cjs/puppeteer/common/Connection';
export * from './types';
export * from './request-patterns';
export declare namespace Interceptor {
interface OnResponseReceivedEvent {
request: Protocol.Network.Request;
response: InterceptedResponse;
}
interface OnInterceptionEvent extends Protocol.Fetch.RequestPausedEvent {
}
interface EventHandlers {
onResponseReceived?: (event: OnResponseReceivedEvent) => Promise<InterceptedResponse | void> | InterceptedResponse | void;
onInterception?: (event: OnInterceptionEvent, control: ControlCallbacks) => Promise<void> | void;
}
interface ResponseOptions {
responseHeaders?: Protocol.Fetch.HeaderEntry[];
binaryResponseHeaders?: string;
body?: string;
responsePhrase?: string;
encodedBody?: string;
}
interface ControlCallbacks {
abort: (msg: Protocol.Network.ErrorReason) => void;
fulfill: (responseCode: number, responseOptions?: ResponseOptions) => void;
}
interface InterceptedResponse {
body: string;
headers: Protocol.Fetch.HeaderEntry[] | undefined;
errorReason?: Protocol.Network.ErrorReason;
statusCode: number;
base64Body?: string;
statusMessage?: string;
}
}
export declare class InterceptionHandler {
page: Page;
patterns: Protocol.Fetch.RequestPattern[];
eventHandlers: Interceptor.EventHandlers;
client?: CDPSession;
disabled: boolean;
constructor(page: Page, patterns?: Protocol.Fetch.RequestPattern[], eventHandlers?: Interceptor.EventHandlers);
disable(): void;
enable(): void;
initialize(): Promise<void>;
}
export declare function intercept(page: Page, patterns?: Protocol.Fetch.RequestPattern[], eventHandlers?: Interceptor.EventHandlers): Promise<InterceptionHandler>;