Skip to content

Commit

Permalink
feat: ability to send headers via ws connection to browser
Browse files Browse the repository at this point in the history
  • Loading branch information
DudaGod committed Nov 23, 2022
1 parent c4803e4 commit e79a660
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
11 changes: 5 additions & 6 deletions packages/puppeteer-core/src/common/BrowserConnector.ts
Expand Up @@ -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.
Expand Down Expand Up @@ -73,18 +75,15 @@ const getWebSocketTransportClass = async () => {
* @internal
*/
export async function _connectToCDPBrowser(
options: BrowserConnectOptions & {
browserWSEndpoint?: string;
browserURL?: string;
transport?: ConnectionTransport;
}
options: BrowserConnectOptions & ConnectOptions
): Promise<CDPBrowser> {
const {
browserWSEndpoint,
browserURL,
ignoreHTTPSErrors = false,
defaultViewport = {width: 800, height: 600},
transport,
headers = {},
slowMo = 0,
targetFilter,
_isPageTarget: isPageTarget,
Expand All @@ -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);
Expand Down
6 changes: 5 additions & 1 deletion packages/puppeteer-core/src/common/NodeWebSocketTransport.ts
Expand Up @@ -21,14 +21,18 @@ import {packageVersion} from '../generated/version.js';
* @internal
*/
export class NodeWebSocketTransport implements ConnectionTransport {
static create(url: string): Promise<NodeWebSocketTransport> {
static create(
url: string,
headers?: Record<string, string>
): Promise<NodeWebSocketTransport> {
return new Promise((resolve, reject) => {
const ws = new NodeWebSocket(url, [], {
followRedirects: true,
perMessageDeflate: false,
maxPayload: 256 * 1024 * 1024, // 256Mb
headers: {
'User-Agent': `Puppeteer ${packageVersion}`,
...headers,
},
});

Expand Down
1 change: 1 addition & 0 deletions packages/puppeteer-core/src/common/Puppeteer.ts
Expand Up @@ -42,6 +42,7 @@ export interface ConnectOptions extends BrowserConnectOptions {
browserWSEndpoint?: string;
browserURL?: string;
transport?: ConnectionTransport;
headers?: Record<string, string>;
}

/**
Expand Down

0 comments on commit e79a660

Please sign in to comment.