@crawlee/browser-pool 3.13.6-beta.1 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstract-classes/browser-controller.d.ts +4 -4
- package/abstract-classes/browser-controller.d.ts.map +1 -1
- package/abstract-classes/browser-controller.js +43 -117
- package/abstract-classes/browser-controller.js.map +1 -1
- package/abstract-classes/browser-plugin.d.ts +5 -16
- package/abstract-classes/browser-plugin.d.ts.map +1 -1
- package/abstract-classes/browser-plugin.js +19 -71
- package/abstract-classes/browser-plugin.js.map +1 -1
- package/anonymize-proxy.js +4 -8
- package/anonymize-proxy.js.map +1 -1
- package/browser-pool.d.ts +6 -6
- package/browser-pool.d.ts.map +1 -1
- package/browser-pool.js +77 -209
- package/browser-pool.js.map +1 -1
- package/container-proxy-server.js +3 -6
- package/container-proxy-server.js.map +1 -1
- package/events.js +4 -7
- package/events.js.map +1 -1
- package/fingerprinting/hooks.d.ts +3 -3
- package/fingerprinting/hooks.d.ts.map +1 -1
- package/fingerprinting/hooks.js +13 -18
- package/fingerprinting/hooks.js.map +1 -1
- package/fingerprinting/types.js +6 -9
- package/fingerprinting/types.js.map +1 -1
- package/fingerprinting/utils.d.ts +2 -2
- package/fingerprinting/utils.d.ts.map +1 -1
- package/fingerprinting/utils.js +9 -13
- package/fingerprinting/utils.js.map +1 -1
- package/index.d.ts +13 -13
- package/index.d.ts.map +1 -1
- package/index.js +11 -26
- package/index.js.map +1 -1
- package/launch-context.d.ts +2 -9
- package/launch-context.d.ts.map +1 -1
- package/launch-context.js +12 -73
- package/launch-context.js.map +1 -1
- package/logger.js +2 -6
- package/logger.js.map +1 -1
- package/package.json +19 -25
- package/playwright/playwright-browser.js +6 -30
- package/playwright/playwright-browser.js.map +1 -1
- package/playwright/playwright-controller.d.ts +2 -2
- package/playwright/playwright-controller.d.ts.map +1 -1
- package/playwright/playwright-controller.js +9 -75
- package/playwright/playwright-controller.js.map +1 -1
- package/playwright/playwright-plugin.d.ts +6 -6
- package/playwright/playwright-plugin.d.ts.map +1 -1
- package/playwright/playwright-plugin.js +19 -106
- package/playwright/playwright-plugin.js.map +1 -1
- package/proxy-server.js +3 -6
- package/proxy-server.js.map +1 -1
- package/puppeteer/puppeteer-controller.d.ts +1 -1
- package/puppeteer/puppeteer-controller.d.ts.map +1 -1
- package/puppeteer/puppeteer-controller.js +13 -17
- package/puppeteer/puppeteer-controller.js.map +1 -1
- package/puppeteer/puppeteer-plugin.d.ts +5 -5
- package/puppeteer/puppeteer-plugin.d.ts.map +1 -1
- package/puppeteer/puppeteer-plugin.js +16 -23
- package/puppeteer/puppeteer-plugin.js.map +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/utils.d.ts +3 -3
- package/utils.d.ts.map +1 -1
- package/utils.js +1 -4
- package/utils.js.map +1 -1
- package/index.mjs +0 -19
- package/playwright/load-firefox-addon.d.ts +0 -2
- package/playwright/load-firefox-addon.d.ts.map +0 -1
- package/playwright/load-firefox-addon.js +0 -86
- package/playwright/load-firefox-addon.js.map +0 -1
- package/tab-as-a-container/background.js +0 -433
- package/tab-as-a-container/content.js +0 -611
- package/tab-as-a-container/manifest.json +0 -21
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const browser_controller_1 = require("../abstract-classes/browser-controller");
|
|
6
|
-
const anonymize_proxy_1 = require("../anonymize-proxy");
|
|
7
|
-
const tabIds = new WeakMap();
|
|
8
|
-
const keyFromTabId = (tabId) => `.${tabId}.`;
|
|
9
|
-
class PlaywrightController extends browser_controller_1.BrowserController {
|
|
1
|
+
import { tryCancel } from '@apify/timeout';
|
|
2
|
+
import { BrowserController } from '../abstract-classes/browser-controller.js';
|
|
3
|
+
import { anonymizeProxySugar } from '../anonymize-proxy.js';
|
|
4
|
+
export class PlaywrightController extends BrowserController {
|
|
10
5
|
normalizeProxyOptions(proxyUrl, pageOptions) {
|
|
11
6
|
if (!proxyUrl) {
|
|
12
7
|
return {};
|
|
@@ -24,14 +19,12 @@ class PlaywrightController extends browser_controller_1.BrowserController {
|
|
|
24
19
|
};
|
|
25
20
|
}
|
|
26
21
|
async _newPage(contextOptions) {
|
|
27
|
-
if (contextOptions !== undefined &&
|
|
28
|
-
|
|
29
|
-
!this.launchContext.experimentalContainers) {
|
|
30
|
-
throw new Error('A new page can be created with provided context only when using incognito pages or experimental containers.');
|
|
22
|
+
if (contextOptions !== undefined && !this.launchContext.useIncognitoPages) {
|
|
23
|
+
throw new Error('A new page can be created with provided context only when using incognito pages.');
|
|
31
24
|
}
|
|
32
25
|
let close = async () => { };
|
|
33
26
|
if (this.launchContext.useIncognitoPages && contextOptions?.proxy) {
|
|
34
|
-
const [anonymizedProxyUrl, closeProxy] = await
|
|
27
|
+
const [anonymizedProxyUrl, closeProxy] = await anonymizeProxySugar(contextOptions.proxy.server, contextOptions.proxy.username, contextOptions.proxy.password);
|
|
35
28
|
if (anonymizedProxyUrl) {
|
|
36
29
|
contextOptions.proxy = {
|
|
37
30
|
server: anonymizedProxyUrl,
|
|
@@ -46,40 +39,7 @@ class PlaywrightController extends browser_controller_1.BrowserController {
|
|
|
46
39
|
this.activePages--;
|
|
47
40
|
await close();
|
|
48
41
|
});
|
|
49
|
-
|
|
50
|
-
await page.goto('data:text/plain,tabid');
|
|
51
|
-
await page.waitForNavigation();
|
|
52
|
-
const { tabid, proxyip } = JSON.parse(decodeURIComponent(page.url().slice('about:blank#'.length)));
|
|
53
|
-
if (contextOptions?.proxy) {
|
|
54
|
-
const url = new URL(contextOptions.proxy.server);
|
|
55
|
-
url.username = contextOptions.proxy.username ?? '';
|
|
56
|
-
url.password = contextOptions.proxy.password ?? '';
|
|
57
|
-
this.browserPlugin._containerProxyServer.ipToProxy.set(proxyip, url.href);
|
|
58
|
-
}
|
|
59
|
-
if (this.browserPlugin.library.name() === 'firefox') {
|
|
60
|
-
// Playwright does not support creating new CDP sessions with Firefox
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
const session = await page.context().newCDPSession(page);
|
|
64
|
-
await session.send('Network.enable');
|
|
65
|
-
session.on('Network.responseReceived', (responseReceived) => {
|
|
66
|
-
const logOnly = ['Document', 'XHR', 'Fetch', 'EventSource', 'WebSocket', 'Other'];
|
|
67
|
-
if (!logOnly.includes(responseReceived.type)) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const { response } = responseReceived;
|
|
71
|
-
if (response.fromDiskCache || response.fromPrefetchCache || response.fromServiceWorker) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const { remoteIPAddress } = response;
|
|
75
|
-
if (remoteIPAddress && remoteIPAddress !== proxyip) {
|
|
76
|
-
console.warn(`Request to ${response.url} was through ${remoteIPAddress} instead of ${proxyip}`);
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
tabIds.set(page, tabid);
|
|
81
|
-
}
|
|
82
|
-
(0, timeout_1.tryCancel)();
|
|
42
|
+
tryCancel();
|
|
83
43
|
return page;
|
|
84
44
|
}
|
|
85
45
|
catch (error) {
|
|
@@ -96,37 +56,11 @@ class PlaywrightController extends browser_controller_1.BrowserController {
|
|
|
96
56
|
}
|
|
97
57
|
async _getCookies(page) {
|
|
98
58
|
const context = page.context();
|
|
99
|
-
|
|
100
|
-
if (this.launchContext.experimentalContainers) {
|
|
101
|
-
const tabId = tabIds.get(page);
|
|
102
|
-
if (tabId === undefined) {
|
|
103
|
-
throw new Error('Failed to find tabId for page');
|
|
104
|
-
}
|
|
105
|
-
const key = keyFromTabId(tabId);
|
|
106
|
-
return cookies
|
|
107
|
-
.filter((cookie) => cookie.name.startsWith(key))
|
|
108
|
-
.map((cookie) => ({
|
|
109
|
-
...cookie,
|
|
110
|
-
name: cookie.name.slice(key.length),
|
|
111
|
-
}));
|
|
112
|
-
}
|
|
113
|
-
return cookies;
|
|
59
|
+
return context.cookies();
|
|
114
60
|
}
|
|
115
61
|
async _setCookies(page, cookies) {
|
|
116
62
|
const context = page.context();
|
|
117
|
-
if (this.launchContext.experimentalContainers) {
|
|
118
|
-
const tabId = tabIds.get(page);
|
|
119
|
-
if (tabId === undefined) {
|
|
120
|
-
throw new Error('Failed to find tabId for page');
|
|
121
|
-
}
|
|
122
|
-
const key = keyFromTabId(tabId);
|
|
123
|
-
cookies = cookies.map((cookie) => ({
|
|
124
|
-
...cookie,
|
|
125
|
-
name: `${key}${cookie.name}`,
|
|
126
|
-
}));
|
|
127
|
-
}
|
|
128
63
|
return context.addCookies(cookies);
|
|
129
64
|
}
|
|
130
65
|
}
|
|
131
|
-
exports.PlaywrightController = PlaywrightController;
|
|
132
66
|
//# sourceMappingURL=playwright-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-controller.js","sourceRoot":"","sources":["../../src/playwright/playwright-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playwright-controller.js","sourceRoot":"","sources":["../../src/playwright/playwright-controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,OAAO,oBAAqB,SAAQ,iBAIzC;IACG,qBAAqB,CAAC,QAA4B,EAAE,WAAgB;QAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,OAAO;YACH,KAAK,EAAE;gBACH,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ;gBACR,QAAQ;gBACR,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM;aACrC;SACJ,CAAC;IACN,CAAC;IAES,KAAK,CAAC,QAAQ,CAAC,cAAsD;QAC3E,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACxG,CAAC;QAED,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,IAAI,cAAc,EAAE,KAAK,EAAE,CAAC;YAChE,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG,MAAM,mBAAmB,CAC9D,cAAc,CAAC,KAAK,CAAC,MAAM,EAC3B,cAAc,CAAC,KAAK,CAAC,QAAQ,EAC7B,cAAc,CAAC,KAAK,CAAC,QAAQ,CAChC,CAAC;YAEF,IAAI,kBAAkB,EAAE,CAAC;gBACrB,cAAc,CAAC,KAAK,GAAG;oBACnB,MAAM,EAAE,kBAAkB;oBAC1B,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM;iBACtC,CAAC;YACN,CAAC;YAED,KAAK,GAAG,UAAU,CAAC;QACvB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAExD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;gBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEnB,MAAM,KAAK,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,SAAS,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,KAAK,EAAE,CAAC;YAEd,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAES,KAAK,CAAC,MAAM;QAClB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,KAAK;QACjB,wDAAwD;QACxD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,uFAAuF;IACvH,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,IAAU;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,IAAU,EAAE,OAAiB;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACJ"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
2
2
|
import type { Browser as PlaywrightBrowser, BrowserType } from 'playwright';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import type {
|
|
7
|
-
import
|
|
3
|
+
import { BrowserPlugin } from '../abstract-classes/browser-plugin.js';
|
|
4
|
+
import type { createProxyServerForContainers } from '../container-proxy-server.js';
|
|
5
|
+
import type { LaunchContext } from '../launch-context.js';
|
|
6
|
+
import type { SafeParameters } from '../utils.js';
|
|
7
|
+
import { PlaywrightController } from './playwright-controller.js';
|
|
8
8
|
export declare class PlaywrightPlugin extends BrowserPlugin<BrowserType, SafeParameters<BrowserType['launch']>[0], PlaywrightBrowser> {
|
|
9
9
|
private _browserVersion?;
|
|
10
10
|
_containerProxyServer?: Awaited<ReturnType<typeof createProxyServerForContainers>>;
|
|
11
11
|
protected _launch(launchContext: LaunchContext<BrowserType>): Promise<PlaywrightBrowser>;
|
|
12
12
|
private _throwOnFailedLaunch;
|
|
13
|
-
|
|
13
|
+
createController(): PlaywrightController;
|
|
14
14
|
protected _addProxyToLaunchOptions(launchContext: LaunchContext<BrowserType>): Promise<void>;
|
|
15
15
|
protected _isChromiumBasedBrowser(): boolean;
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-plugin.d.ts","sourceRoot":"","sources":["../../src/playwright/playwright-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playwright-plugin.d.ts","sourceRoot":"","sources":["../../src/playwright/playwright-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,IAAI,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,qBAAa,gBAAiB,SAAQ,aAAa,CAC/C,WAAW,EACX,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EACxC,iBAAiB,CACpB;IACG,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,qBAAqB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC;cAEnE,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgF9F,OAAO,CAAC,oBAAoB;IASnB,gBAAgB,IAAI,oBAAoB;cAIjC,wBAAwB,CAAC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlG,SAAS,CAAC,uBAAuB,IAAI,OAAO;CAI/C"}
|
|
@@ -1,63 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const container_proxy_server_1 = require("../container-proxy-server");
|
|
12
|
-
const logger_1 = require("../logger");
|
|
13
|
-
const proxy_server_1 = require("../proxy-server");
|
|
14
|
-
const load_firefox_addon_1 = require("./load-firefox-addon");
|
|
15
|
-
const playwright_browser_1 = require("./playwright-browser");
|
|
16
|
-
const playwright_controller_1 = require("./playwright-controller");
|
|
17
|
-
const getFreePort = async () => {
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
const server = node_net_1.default
|
|
20
|
-
.createServer()
|
|
21
|
-
.once('error', reject)
|
|
22
|
-
.listen(() => {
|
|
23
|
-
resolve(server.address().port);
|
|
24
|
-
server.close();
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
// __dirname = browser-pool/dist/playwright
|
|
29
|
-
// taacPath = browser-pool/dist/tab-as-a-container
|
|
30
|
-
const taacPath = node_path_1.default.join(__dirname, '..', 'tab-as-a-container');
|
|
31
|
-
class PlaywrightPlugin extends browser_plugin_1.BrowserPlugin {
|
|
32
|
-
constructor() {
|
|
33
|
-
super(...arguments);
|
|
34
|
-
Object.defineProperty(this, "_browserVersion", {
|
|
35
|
-
enumerable: true,
|
|
36
|
-
configurable: true,
|
|
37
|
-
writable: true,
|
|
38
|
-
value: void 0
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperty(this, "_containerProxyServer", {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
configurable: true,
|
|
43
|
-
writable: true,
|
|
44
|
-
value: void 0
|
|
45
|
-
});
|
|
46
|
-
}
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { BrowserPlugin } from '../abstract-classes/browser-plugin.js';
|
|
3
|
+
import { anonymizeProxySugar } from '../anonymize-proxy.js';
|
|
4
|
+
import { log } from '../logger.js';
|
|
5
|
+
import { getLocalProxyAddress } from '../proxy-server.js';
|
|
6
|
+
import { PlaywrightBrowser as PlaywrightBrowserWithPersistentContext } from './playwright-browser.js';
|
|
7
|
+
import { PlaywrightController } from './playwright-controller.js';
|
|
8
|
+
export class PlaywrightPlugin extends BrowserPlugin {
|
|
9
|
+
_browserVersion;
|
|
10
|
+
_containerProxyServer;
|
|
47
11
|
async _launch(launchContext) {
|
|
48
|
-
const { launchOptions, useIncognitoPages, proxyUrl } = launchContext;
|
|
49
|
-
let { userDataDir } = launchContext;
|
|
12
|
+
const { launchOptions, useIncognitoPages, userDataDir, proxyUrl } = launchContext;
|
|
50
13
|
let browser;
|
|
51
14
|
// Required for the `proxy` context option to work.
|
|
52
15
|
launchOptions.proxy = {
|
|
53
|
-
server: await
|
|
16
|
+
server: await getLocalProxyAddress(),
|
|
54
17
|
...launchOptions.proxy,
|
|
55
18
|
};
|
|
56
19
|
// WebKit does not support --no-sandbox
|
|
57
20
|
if (this.library.name() === 'webkit') {
|
|
58
21
|
launchOptions.args = launchOptions.args?.filter((arg) => arg !== '--no-sandbox');
|
|
59
22
|
}
|
|
60
|
-
const [anonymizedProxyUrl, close] = await
|
|
23
|
+
const [anonymizedProxyUrl, close] = await anonymizeProxySugar(proxyUrl);
|
|
61
24
|
if (anonymizedProxyUrl) {
|
|
62
25
|
launchOptions.proxy = {
|
|
63
26
|
server: anonymizedProxyUrl,
|
|
@@ -76,33 +39,6 @@ class PlaywrightPlugin extends browser_plugin_1.BrowserPlugin {
|
|
|
76
39
|
}
|
|
77
40
|
}
|
|
78
41
|
else {
|
|
79
|
-
const experimentalContainers = launchContext.experimentalContainers && this.library.name() !== 'webkit';
|
|
80
|
-
let firefoxPort;
|
|
81
|
-
if (experimentalContainers) {
|
|
82
|
-
launchOptions.args = [...(launchOptions.args ?? [])];
|
|
83
|
-
// Use native headless mode so we can load an extension
|
|
84
|
-
if (launchOptions.headless && this.library.name() === 'chromium') {
|
|
85
|
-
launchOptions.args.push('--headless=chrome');
|
|
86
|
-
}
|
|
87
|
-
if (this.library.name() === 'chromium') {
|
|
88
|
-
launchOptions.args.push(`--disable-extensions-except=${taacPath}`, `--load-extension=${taacPath}`);
|
|
89
|
-
}
|
|
90
|
-
else if (this.library.name() === 'firefox') {
|
|
91
|
-
firefoxPort = await getFreePort();
|
|
92
|
-
launchOptions.args.push(`--start-debugger-server=${firefoxPort}`);
|
|
93
|
-
const prefs = {
|
|
94
|
-
'devtools.debugger.remote-enabled': true,
|
|
95
|
-
'devtools.debugger.prompt-connection': false,
|
|
96
|
-
};
|
|
97
|
-
const prefsRaw = Object.entries(prefs)
|
|
98
|
-
.map(([name, value]) => `user_pref(${JSON.stringify(name)}, ${JSON.stringify(value)});`)
|
|
99
|
-
.join('\n');
|
|
100
|
-
if (userDataDir === '') {
|
|
101
|
-
userDataDir = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), 'apify-playwright-firefox-taac-'));
|
|
102
|
-
}
|
|
103
|
-
node_fs_1.default.writeFileSync(node_path_1.default.join(userDataDir, 'user.js'), prefsRaw);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
42
|
const browserContext = await this.library
|
|
107
43
|
.launchPersistentContext(userDataDir, launchOptions)
|
|
108
44
|
.catch((error) => {
|
|
@@ -110,34 +46,12 @@ class PlaywrightPlugin extends browser_plugin_1.BrowserPlugin {
|
|
|
110
46
|
});
|
|
111
47
|
browserContext.once('close', () => {
|
|
112
48
|
if (userDataDir.includes('apify-playwright-firefox-taac-')) {
|
|
113
|
-
|
|
49
|
+
fs.rmSync(userDataDir, {
|
|
114
50
|
recursive: true,
|
|
115
51
|
force: true,
|
|
116
52
|
});
|
|
117
53
|
}
|
|
118
54
|
});
|
|
119
|
-
if (experimentalContainers) {
|
|
120
|
-
if (this.library.name() === 'firefox') {
|
|
121
|
-
const loaded = await (0, load_firefox_addon_1.loadFirefoxAddon)(firefoxPort, '127.0.0.1', taacPath);
|
|
122
|
-
if (!loaded) {
|
|
123
|
-
await browserContext.close();
|
|
124
|
-
throw new Error('Failed to load Firefox experimental containers addon');
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// Wait for the extension to load.
|
|
128
|
-
const checker = await browserContext.newPage();
|
|
129
|
-
await checker.goto('data:text/plain,tabid');
|
|
130
|
-
await checker.waitForNavigation();
|
|
131
|
-
await checker.close();
|
|
132
|
-
this._containerProxyServer = await (0, container_proxy_server_1.createProxyServerForContainers)();
|
|
133
|
-
const page = await browserContext.newPage();
|
|
134
|
-
await page.goto(`data:text/plain,proxy#{"port":${this._containerProxyServer.port}}`);
|
|
135
|
-
await page.waitForNavigation();
|
|
136
|
-
await page.close();
|
|
137
|
-
browserContext.on('close', async () => {
|
|
138
|
-
await this._containerProxyServer.close(true);
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
55
|
if (anonymizedProxyUrl) {
|
|
142
56
|
browserContext.on('close', async () => {
|
|
143
57
|
await close();
|
|
@@ -148,10 +62,10 @@ class PlaywrightPlugin extends browser_plugin_1.BrowserPlugin {
|
|
|
148
62
|
const inactiveBrowser = await this.library.launch(launchOptions);
|
|
149
63
|
this._browserVersion = inactiveBrowser.version();
|
|
150
64
|
inactiveBrowser.close().catch((error) => {
|
|
151
|
-
|
|
65
|
+
log.exception(error, 'Failed to close browser.');
|
|
152
66
|
});
|
|
153
67
|
}
|
|
154
|
-
browser = new
|
|
68
|
+
browser = new PlaywrightBrowserWithPersistentContext({
|
|
155
69
|
browserContext,
|
|
156
70
|
version: this._browserVersion,
|
|
157
71
|
});
|
|
@@ -166,11 +80,11 @@ class PlaywrightPlugin extends browser_plugin_1.BrowserPlugin {
|
|
|
166
80
|
_throwOnFailedLaunch(launchContext, cause) {
|
|
167
81
|
this._throwAugmentedLaunchError(cause, launchContext.launchOptions?.executablePath, '`apify/actor-node-playwright-*` (with a correct browser name)', 'Try installing the required dependencies by running `npx playwright install --with-deps` (https://playwright.dev/docs/browsers).');
|
|
168
82
|
}
|
|
169
|
-
|
|
170
|
-
return new
|
|
83
|
+
createController() {
|
|
84
|
+
return new PlaywrightController(this);
|
|
171
85
|
}
|
|
172
86
|
async _addProxyToLaunchOptions(launchContext) {
|
|
173
|
-
launchContext.launchOptions
|
|
87
|
+
launchContext.launchOptions ??= {};
|
|
174
88
|
const { launchOptions, proxyUrl } = launchContext;
|
|
175
89
|
if (proxyUrl) {
|
|
176
90
|
const url = new URL(proxyUrl);
|
|
@@ -186,5 +100,4 @@ class PlaywrightPlugin extends browser_plugin_1.BrowserPlugin {
|
|
|
186
100
|
return name === 'chromium';
|
|
187
101
|
}
|
|
188
102
|
}
|
|
189
|
-
exports.PlaywrightPlugin = PlaywrightPlugin;
|
|
190
103
|
//# sourceMappingURL=playwright-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-plugin.js","sourceRoot":"","sources":["../../src/playwright/playwright-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playwright-plugin.js","sourceRoot":"","sources":["../../src/playwright/playwright-plugin.ts"],"names":[],"mappings":"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"}
|
package/proxy-server.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getLocalProxyAddress = getLocalProxyAddress;
|
|
4
|
-
const proxy_chain_1 = require("proxy-chain");
|
|
5
|
-
const server = new proxy_chain_1.Server({
|
|
1
|
+
import { Server as ProxyChainServer } from 'proxy-chain';
|
|
2
|
+
const server = new ProxyChainServer({
|
|
6
3
|
port: 0,
|
|
7
4
|
});
|
|
8
5
|
server.server.unref();
|
|
9
6
|
const listenPromise = server.listen();
|
|
10
7
|
listenPromise.catch(() => { });
|
|
11
8
|
// https://github.com/microsoft/playwright/blob/2e4722d460b5142267e0e506ca7ea9a259556b5f/packages/playwright-core/src/server/browserContext.ts#L423-L427
|
|
12
|
-
async function getLocalProxyAddress() {
|
|
9
|
+
export async function getLocalProxyAddress() {
|
|
13
10
|
await listenPromise;
|
|
14
11
|
return `http://127.0.0.1:${server.port}`;
|
|
15
12
|
}
|
package/proxy-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../src/proxy-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../src/proxy-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;IAChC,IAAI,EAAE,CAAC;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAEtB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AACtC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAE9B,wJAAwJ;AACxJ,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACtC,MAAM,aAAa,CAAC;IACpB,OAAO,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -3,7 +3,7 @@ import type { Cookie } from '@crawlee/types';
|
|
|
3
3
|
import type Puppeteer from 'puppeteer';
|
|
4
4
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
5
5
|
import type * as PuppeteerTypes from 'puppeteer';
|
|
6
|
-
import { BrowserController } from '../abstract-classes/browser-controller';
|
|
6
|
+
import { BrowserController } from '../abstract-classes/browser-controller.js';
|
|
7
7
|
export interface PuppeteerNewPageOptions extends PuppeteerTypes.BrowserContextOptions {
|
|
8
8
|
proxyUsername?: string;
|
|
9
9
|
proxyPassword?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puppeteer-controller.d.ts","sourceRoot":"","sources":["../../src/puppeteer/puppeteer-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,KAAK,cAAc,MAAM,WAAW,CAAC;AAIjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"puppeteer-controller.d.ts","sourceRoot":"","sources":["../../src/puppeteer/puppeteer-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,KAAK,cAAc,MAAM,WAAW,CAAC;AAIjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAI9E,MAAM,WAAW,uBAAwB,SAAQ,cAAc,CAAC,qBAAqB;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,qBAAa,mBAAoB,SAAQ,iBAAiB,CACtD,OAAO,SAAS,EAChB,cAAc,CAAC,aAAa,EAC5B,cAAc,CAAC,OAAO,EACtB,uBAAuB,CAC1B;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAiB9E,QAAQ,CAAC,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;cA0EhF,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;cAIvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAuBtB,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAIzD,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3F"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const browser_controller_1 = require("../abstract-classes/browser-controller");
|
|
6
|
-
const anonymize_proxy_1 = require("../anonymize-proxy");
|
|
7
|
-
const logger_1 = require("../logger");
|
|
1
|
+
import { tryCancel } from '@apify/timeout';
|
|
2
|
+
import { BrowserController } from '../abstract-classes/browser-controller.js';
|
|
3
|
+
import { anonymizeProxySugar } from '../anonymize-proxy.js';
|
|
4
|
+
import { log } from '../logger.js';
|
|
8
5
|
const PROCESS_KILL_TIMEOUT_MILLIS = 5000;
|
|
9
|
-
class PuppeteerController extends
|
|
6
|
+
export class PuppeteerController extends BrowserController {
|
|
10
7
|
normalizeProxyOptions(proxyUrl, pageOptions) {
|
|
11
8
|
if (!proxyUrl) {
|
|
12
9
|
return {};
|
|
@@ -24,11 +21,11 @@ class PuppeteerController extends browser_controller_1.BrowserController {
|
|
|
24
21
|
async _newPage(contextOptions) {
|
|
25
22
|
if (contextOptions !== undefined) {
|
|
26
23
|
if (!this.launchContext.useIncognitoPages) {
|
|
27
|
-
throw new Error('A new page can be created with provided context only when using incognito pages
|
|
24
|
+
throw new Error('A new page can be created with provided context only when using incognito pages.');
|
|
28
25
|
}
|
|
29
26
|
let close = async () => { };
|
|
30
27
|
if (contextOptions.proxyServer) {
|
|
31
|
-
const [anonymizedProxyUrl, closeProxy] = await
|
|
28
|
+
const [anonymizedProxyUrl, closeProxy] = await anonymizeProxySugar(contextOptions.proxyServer, contextOptions.proxyUsername, contextOptions.proxyPassword);
|
|
32
29
|
if (anonymizedProxyUrl) {
|
|
33
30
|
contextOptions.proxyServer = anonymizedProxyUrl;
|
|
34
31
|
delete contextOptions.proxyUsername;
|
|
@@ -42,9 +39,9 @@ class PuppeteerController extends browser_controller_1.BrowserController {
|
|
|
42
39
|
const oldPuppeteerVersion = !CdpBrowser || 'createIncognitoBrowserContext' in CdpBrowser.prototype;
|
|
43
40
|
const method = oldPuppeteerVersion ? 'createIncognitoBrowserContext' : 'createBrowserContext';
|
|
44
41
|
const context = (await this.browser[method](contextOptions));
|
|
45
|
-
|
|
42
|
+
tryCancel();
|
|
46
43
|
const page = await context.newPage();
|
|
47
|
-
|
|
44
|
+
tryCancel();
|
|
48
45
|
/*
|
|
49
46
|
// DO NOT USE YET! DOING SO DISABLES CACHE WHICH IS 50% PERFORMANCE HIT!
|
|
50
47
|
if (contextOptions.proxyUsername || contextOptions.proxyPassword) {
|
|
@@ -61,7 +58,7 @@ class PuppeteerController extends browser_controller_1.BrowserController {
|
|
|
61
58
|
await context.close();
|
|
62
59
|
}
|
|
63
60
|
catch (error) {
|
|
64
|
-
|
|
61
|
+
log.exception(error, 'Failed to close context.');
|
|
65
62
|
}
|
|
66
63
|
finally {
|
|
67
64
|
await close();
|
|
@@ -75,7 +72,7 @@ class PuppeteerController extends browser_controller_1.BrowserController {
|
|
|
75
72
|
}
|
|
76
73
|
}
|
|
77
74
|
const page = await this.browser.newPage();
|
|
78
|
-
|
|
75
|
+
tryCancel();
|
|
79
76
|
page.once('close', () => {
|
|
80
77
|
this.activePages--;
|
|
81
78
|
});
|
|
@@ -87,7 +84,7 @@ class PuppeteerController extends browser_controller_1.BrowserController {
|
|
|
87
84
|
async _kill() {
|
|
88
85
|
const browserProcess = this.browser.process();
|
|
89
86
|
if (!browserProcess) {
|
|
90
|
-
|
|
87
|
+
log.debug('Browser was connected using the `puppeteer.connect` method no browser to kill.');
|
|
91
88
|
return;
|
|
92
89
|
}
|
|
93
90
|
const timeout = setTimeout(() => {
|
|
@@ -101,7 +98,7 @@ class PuppeteerController extends browser_controller_1.BrowserController {
|
|
|
101
98
|
clearTimeout(timeout);
|
|
102
99
|
}
|
|
103
100
|
catch (error) {
|
|
104
|
-
|
|
101
|
+
log.debug('Browser was already killed.', { error });
|
|
105
102
|
}
|
|
106
103
|
}
|
|
107
104
|
async _getCookies(page) {
|
|
@@ -111,5 +108,4 @@ class PuppeteerController extends browser_controller_1.BrowserController {
|
|
|
111
108
|
return page.setCookie(...cookies);
|
|
112
109
|
}
|
|
113
110
|
}
|
|
114
|
-
exports.PuppeteerController = PuppeteerController;
|
|
115
111
|
//# sourceMappingURL=puppeteer-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puppeteer-controller.js","sourceRoot":"","sources":["../../src/puppeteer/puppeteer-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"puppeteer-controller.js","sourceRoot":"","sources":["../../src/puppeteer/puppeteer-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import type Puppeteer from 'puppeteer';
|
|
3
3
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
4
4
|
import type * as PuppeteerTypes from 'puppeteer';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import type {
|
|
8
|
-
import
|
|
5
|
+
import { BrowserPlugin } from '../abstract-classes/browser-plugin.js';
|
|
6
|
+
import type { LaunchContext } from '../launch-context.js';
|
|
7
|
+
import type { PuppeteerNewPageOptions } from './puppeteer-controller.js';
|
|
8
|
+
import { PuppeteerController } from './puppeteer-controller.js';
|
|
9
9
|
export declare class PuppeteerPlugin extends BrowserPlugin<typeof Puppeteer, PuppeteerTypes.LaunchOptions, PuppeteerTypes.Browser, PuppeteerNewPageOptions> {
|
|
10
10
|
protected _launch(launchContext: LaunchContext<typeof Puppeteer, PuppeteerTypes.LaunchOptions, PuppeteerTypes.Browser, PuppeteerNewPageOptions>): Promise<PuppeteerTypes.Browser>;
|
|
11
|
-
|
|
11
|
+
createController(): PuppeteerController;
|
|
12
12
|
protected _addProxyToLaunchOptions(_launchContext: LaunchContext<typeof Puppeteer, PuppeteerTypes.LaunchOptions, PuppeteerTypes.Browser, PuppeteerNewPageOptions>): Promise<void>;
|
|
13
13
|
protected _isChromiumBasedBrowser(_launchContext: LaunchContext<typeof Puppeteer, PuppeteerTypes.LaunchOptions, PuppeteerTypes.Browser, PuppeteerNewPageOptions>): boolean;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puppeteer-plugin.d.ts","sourceRoot":"","sources":["../../src/puppeteer/puppeteer-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,KAAK,cAAc,MAAM,WAAW,CAAC;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"puppeteer-plugin.d.ts","sourceRoot":"","sources":["../../src/puppeteer/puppeteer-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,KAAK,cAAc,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAIhE,qBAAa,eAAgB,SAAQ,aAAa,CAC9C,OAAO,SAAS,EAChB,cAAc,CAAC,aAAa,EAC5B,cAAc,CAAC,OAAO,EACtB,uBAAuB,CAC1B;cACmB,OAAO,CACnB,aAAa,EAAE,aAAa,CACxB,OAAO,SAAS,EAChB,cAAc,CAAC,aAAa,EAC5B,cAAc,CAAC,OAAO,EACtB,uBAAuB,CAC1B,GACF,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;IA4JzB,gBAAgB,IAAI,mBAAmB;cAIhC,wBAAwB,CACpC,cAAc,EAAE,aAAa,CACzB,OAAO,SAAS,EAChB,cAAc,CAAC,aAAa,EAC5B,cAAc,CAAC,OAAO,EACtB,uBAAuB,CAC1B,GACF,OAAO,CAAC,IAAI,CAAC;IA4BhB,SAAS,CAAC,uBAAuB,CAC7B,cAAc,EAAE,aAAa,CACzB,OAAO,SAAS,EAChB,cAAc,CAAC,aAAa,EAC5B,cAAc,CAAC,OAAO,EACtB,uBAAuB,CAC1B,GACF,OAAO;CAGb"}
|