diff --git a/docs/api/puppeteer.connectoptions.headers.md b/docs/api/puppeteer.connectoptions.headers.md new file mode 100644 index 0000000000000..d20da03214fb9 --- /dev/null +++ b/docs/api/puppeteer.connectoptions.headers.md @@ -0,0 +1,13 @@ +--- +sidebar_label: ConnectOptions.headers +--- + +# ConnectOptions.headers property + +#### Signature: + +```typescript +interface ConnectOptions { + headers?: Record; +} +``` diff --git a/docs/api/puppeteer.connectoptions.md b/docs/api/puppeteer.connectoptions.md index 84e5a50ec9b7d..fc5a7c267c857 100644 --- a/docs/api/puppeteer.connectoptions.md +++ b/docs/api/puppeteer.connectoptions.md @@ -18,4 +18,5 @@ export interface ConnectOptions extends BrowserConnectOptions | --------------------------------------------------------------------- | --------- | --------------------------------------------------------- | ----------------- | ------- | | [browserURL?](./puppeteer.connectoptions.browserurl.md) | | string | (Optional) | | | [browserWSEndpoint?](./puppeteer.connectoptions.browserwsendpoint.md) | | string | (Optional) | | +| [headers?](./puppeteer.connectoptions.headers.md) | | Record<string, string> | (Optional) | | | [transport?](./puppeteer.connectoptions.transport.md) | | [ConnectionTransport](./puppeteer.connectiontransport.md) | (Optional) | | diff --git a/packages/puppeteer-core/src/common/BrowserConnector.ts b/packages/puppeteer-core/src/common/BrowserConnector.ts index 6c925a4609287..2d0647dbf834a 100644 --- a/packages/puppeteer-core/src/common/BrowserConnector.ts +++ b/packages/puppeteer-core/src/common/BrowserConnector.ts @@ -24,6 +24,8 @@ import {Connection} from './Connection.js'; import {ConnectionTransport} from './ConnectionTransport.js'; import {getFetch} from './fetch.js'; import {Viewport} from './PuppeteerViewport.js'; + +import type {ConnectOptions} from './Puppeteer.js'; /** * Generic browser options that can be passed when launching any browser or when * connecting to an existing browser instance. @@ -73,11 +75,7 @@ const getWebSocketTransportClass = async () => { * @internal */ export async function _connectToCDPBrowser( - options: BrowserConnectOptions & { - browserWSEndpoint?: string; - browserURL?: string; - transport?: ConnectionTransport; - } + options: BrowserConnectOptions & ConnectOptions ): Promise { const { browserWSEndpoint, @@ -85,6 +83,7 @@ export async function _connectToCDPBrowser( ignoreHTTPSErrors = false, defaultViewport = {width: 800, height: 600}, transport, + headers = {}, slowMo = 0, targetFilter, _isPageTarget: isPageTarget, @@ -102,7 +101,7 @@ export async function _connectToCDPBrowser( } else if (browserWSEndpoint) { const WebSocketClass = await getWebSocketTransportClass(); const connectionTransport: ConnectionTransport = - await WebSocketClass.create(browserWSEndpoint); + await WebSocketClass.create(browserWSEndpoint, headers); connection = new Connection(browserWSEndpoint, connectionTransport, slowMo); } else if (browserURL) { const connectionURL = await getWSEndpoint(browserURL); diff --git a/packages/puppeteer-core/src/common/NodeWebSocketTransport.ts b/packages/puppeteer-core/src/common/NodeWebSocketTransport.ts index fbe8e7c92c0c0..810a959a70d72 100644 --- a/packages/puppeteer-core/src/common/NodeWebSocketTransport.ts +++ b/packages/puppeteer-core/src/common/NodeWebSocketTransport.ts @@ -21,7 +21,10 @@ import {packageVersion} from '../generated/version.js'; * @internal */ export class NodeWebSocketTransport implements ConnectionTransport { - static create(url: string): Promise { + static create( + url: string, + headers?: Record + ): Promise { return new Promise((resolve, reject) => { const ws = new NodeWebSocket(url, [], { followRedirects: true, @@ -29,6 +32,7 @@ export class NodeWebSocketTransport implements ConnectionTransport { maxPayload: 256 * 1024 * 1024, // 256Mb headers: { 'User-Agent': `Puppeteer ${packageVersion}`, + ...headers, }, }); diff --git a/packages/puppeteer-core/src/common/Puppeteer.ts b/packages/puppeteer-core/src/common/Puppeteer.ts index 306e1eb9a87cd..3209f1bb6d473 100644 --- a/packages/puppeteer-core/src/common/Puppeteer.ts +++ b/packages/puppeteer-core/src/common/Puppeteer.ts @@ -42,6 +42,7 @@ export interface ConnectOptions extends BrowserConnectOptions { browserWSEndpoint?: string; browserURL?: string; transport?: ConnectionTransport; + headers?: Record; } /**