@letsscrapedata/controller 0.0.70 → 0.1.0
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/dist/index.cjs +175 -46
- package/dist/index.d.cts +27 -3
- package/dist/index.d.ts +27 -3
- package/dist/index.js +173 -44
- package/package.json +7 -12
package/dist/index.js
CHANGED
|
@@ -1219,6 +1219,7 @@ var PlaywrightPage = class extends EventEmitter {
|
|
|
1219
1219
|
requestMethod,
|
|
1220
1220
|
requestUrl,
|
|
1221
1221
|
requestData,
|
|
1222
|
+
resourceType: request.resourceType(),
|
|
1222
1223
|
responseData
|
|
1223
1224
|
});
|
|
1224
1225
|
loginfo(`##browser cache matched response: ${requestUrl}`);
|
|
@@ -1304,6 +1305,9 @@ var PlaywrightPage = class extends EventEmitter {
|
|
|
1304
1305
|
logdbg(`##browser LsdPage ${this.#pageId} is allocated`);
|
|
1305
1306
|
return true;
|
|
1306
1307
|
}
|
|
1308
|
+
userAgent() {
|
|
1309
|
+
return this.#lsdBrowserContext.userAgent();
|
|
1310
|
+
}
|
|
1307
1311
|
async waitForElement(selector, options = {}) {
|
|
1308
1312
|
if (!this.#page) {
|
|
1309
1313
|
throw new Error("No valid page");
|
|
@@ -1418,6 +1422,7 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1418
1422
|
#browserContextIdx;
|
|
1419
1423
|
#browserContext;
|
|
1420
1424
|
#browserContextCreationMethod;
|
|
1425
|
+
#userAgent;
|
|
1421
1426
|
#apiContext;
|
|
1422
1427
|
#createTime;
|
|
1423
1428
|
#lastStatusUpdateTime;
|
|
@@ -1445,8 +1450,15 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1445
1450
|
await lsdPage.maximizeViewport();
|
|
1446
1451
|
}
|
|
1447
1452
|
}
|
|
1453
|
+
if (!this.#userAgent && this.#lsdPages.length > 0) {
|
|
1454
|
+
const lsdPage = this.#lsdPages[0];
|
|
1455
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
1456
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
1457
|
+
this.#userAgent = userAgent;
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1448
1460
|
}
|
|
1449
|
-
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
1461
|
+
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
1450
1462
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
1451
1463
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
1452
1464
|
}
|
|
@@ -1459,6 +1471,7 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1459
1471
|
this.#browserContextIdx = browserContextIdx;
|
|
1460
1472
|
this.#browserContext = browserContext;
|
|
1461
1473
|
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
1474
|
+
this.#userAgent = userAgent;
|
|
1462
1475
|
const apiRequestContext = browserContext.request;
|
|
1463
1476
|
this.#apiContext = new PlaywrightApiContext(apiRequestContext);
|
|
1464
1477
|
const currentTime = getCurrentUnixTime2();
|
|
@@ -1612,6 +1625,12 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1612
1625
|
}
|
|
1613
1626
|
lsdPage = this.#lsdPages.find((p) => p.isFree());
|
|
1614
1627
|
if (lsdPage) {
|
|
1628
|
+
if (!this.#userAgent) {
|
|
1629
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
1630
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
1631
|
+
this.#userAgent = userAgent;
|
|
1632
|
+
}
|
|
1633
|
+
}
|
|
1615
1634
|
lsdPage.use();
|
|
1616
1635
|
this.#freeGettingLock();
|
|
1617
1636
|
return lsdPage;
|
|
@@ -1718,6 +1737,9 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1718
1737
|
return false;
|
|
1719
1738
|
}
|
|
1720
1739
|
}
|
|
1740
|
+
userAgent() {
|
|
1741
|
+
return this.#userAgent;
|
|
1742
|
+
}
|
|
1721
1743
|
_origBrowserContext() {
|
|
1722
1744
|
return this.#browserContext;
|
|
1723
1745
|
}
|
|
@@ -1725,7 +1747,7 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1725
1747
|
|
|
1726
1748
|
// src/playwright/browser.ts
|
|
1727
1749
|
var PlaywrightBrowser = class _PlaywrightBrowser extends EventEmitter3 {
|
|
1728
|
-
static #supportedBrowserTypes = ["chromium", "firefox", "webkit"];
|
|
1750
|
+
static #supportedBrowserTypes = ["chrome", "chromium", "firefox", "webkit"];
|
|
1729
1751
|
static doesSupport(browserType) {
|
|
1730
1752
|
return _PlaywrightBrowser.#supportedBrowserTypes.includes(browserType);
|
|
1731
1753
|
}
|
|
@@ -1787,7 +1809,7 @@ var PlaywrightBrowser = class _PlaywrightBrowser extends EventEmitter3 {
|
|
|
1787
1809
|
}
|
|
1788
1810
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : true;
|
|
1789
1811
|
for (const browserContext of browserContexts) {
|
|
1790
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1812
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), "", maxViewportOfNewPage);
|
|
1791
1813
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1792
1814
|
}
|
|
1793
1815
|
browser.on("disconnected" /* BROWSER_DISCONNECTED */, () => {
|
|
@@ -1839,12 +1861,17 @@ var PlaywrightBrowser = class _PlaywrightBrowser extends EventEmitter3 {
|
|
|
1839
1861
|
const { proxyUrl: server, username, password } = proxy;
|
|
1840
1862
|
browserContextOptions.proxy = { server, username, password };
|
|
1841
1863
|
}
|
|
1842
|
-
|
|
1843
|
-
|
|
1864
|
+
let userAgent = options?.userAgent ? options.userAgent : this.#options.userAgent;
|
|
1865
|
+
const lsdLaunchOptions = this.#options;
|
|
1866
|
+
if (!userAgent && lsdLaunchOptions.headless && lsdLaunchOptions.headlessUserAgent) {
|
|
1867
|
+
userAgent = lsdLaunchOptions.headlessUserAgent;
|
|
1868
|
+
}
|
|
1869
|
+
if (userAgent) {
|
|
1870
|
+
browserContextOptions.userAgent = userAgent;
|
|
1844
1871
|
}
|
|
1845
1872
|
const browserContext = await this.#browser.newContext(browserContextOptions);
|
|
1846
1873
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
1847
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1874
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
1848
1875
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1849
1876
|
return lsdBrowserContext;
|
|
1850
1877
|
}
|
|
@@ -2227,6 +2254,7 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
2227
2254
|
#page;
|
|
2228
2255
|
#status;
|
|
2229
2256
|
#pageId;
|
|
2257
|
+
#userAgent;
|
|
2230
2258
|
#closeWhenFree;
|
|
2231
2259
|
#requestInterceptionNum;
|
|
2232
2260
|
#responseInterceptionNum;
|
|
@@ -2250,7 +2278,7 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
2250
2278
|
}
|
|
2251
2279
|
const origCookies = await page.cookies();
|
|
2252
2280
|
const cookies = origCookies.map((origCookie) => {
|
|
2253
|
-
const { name, value, domain, path, expires, httpOnly, secure, sameSite = "Lax" } = origCookie;
|
|
2281
|
+
const { name, value, domain, path, expires, httpOnly = false, secure, sameSite = "Lax" } = origCookie;
|
|
2254
2282
|
return { name, value, domain, path, expires, httpOnly, secure, sameSite };
|
|
2255
2283
|
});
|
|
2256
2284
|
return cookies;
|
|
@@ -2460,6 +2488,7 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
2460
2488
|
const { browserIdx = 0, browserContextIdx = 0, pageIdx = 0, openType = "other", openTime = currentTime, lastStatusUpdateTime = currentTime, taskId = 0, relatedId = 0, misc = {} } = pageInfo ? pageInfo : {};
|
|
2461
2489
|
this.#page.pageInfo = { browserIdx, browserContextIdx, pageIdx, openType, openTime, lastStatusUpdateTime, taskId, relatedId, misc };
|
|
2462
2490
|
this.#pageId = `PuppeteerPage-${browserIdx}-${browserContextIdx}-${pageIdx}`;
|
|
2491
|
+
this.#userAgent = browserContext.userAgent();
|
|
2463
2492
|
this.#closeWhenFree = false;
|
|
2464
2493
|
this.#requestInterceptionNum = 0;
|
|
2465
2494
|
this.#responseInterceptionNum = 0;
|
|
@@ -3028,6 +3057,7 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
3028
3057
|
requestMethod,
|
|
3029
3058
|
requestUrl,
|
|
3030
3059
|
requestData,
|
|
3060
|
+
resourceType: request.resourceType(),
|
|
3031
3061
|
responseData
|
|
3032
3062
|
});
|
|
3033
3063
|
loginfo(`##browser cache matched response: ${requestUrl}`);
|
|
@@ -3055,10 +3085,11 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
3055
3085
|
return await this.#lsdBrowserContext.setStateData(stateData);
|
|
3056
3086
|
}
|
|
3057
3087
|
async setUserAgent(userAgent) {
|
|
3058
|
-
if (!this.#page) {
|
|
3088
|
+
if (!this.#page || !userAgent) {
|
|
3059
3089
|
throw new Error("No valid page");
|
|
3060
3090
|
}
|
|
3061
3091
|
await this.#page.setUserAgent(userAgent);
|
|
3092
|
+
this.#userAgent = userAgent;
|
|
3062
3093
|
return true;
|
|
3063
3094
|
}
|
|
3064
3095
|
async setViewportSize(viewPortSize) {
|
|
@@ -3099,6 +3130,9 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
3099
3130
|
logdbg(`##browser LsdPage ${this.#pageId} is allocated`);
|
|
3100
3131
|
return true;
|
|
3101
3132
|
}
|
|
3133
|
+
userAgent() {
|
|
3134
|
+
return this.#userAgent;
|
|
3135
|
+
}
|
|
3102
3136
|
async waitForElement(selector, options = {}) {
|
|
3103
3137
|
if (!this.#page) {
|
|
3104
3138
|
throw new Error("No valid page");
|
|
@@ -3182,9 +3216,9 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3182
3216
|
#browserContext;
|
|
3183
3217
|
#browserContextCreationMethod;
|
|
3184
3218
|
/**
|
|
3185
|
-
*
|
|
3186
|
-
* * Notice: it is not the actual userAgent if !#userAgent (ignored if !#userAgent)
|
|
3219
|
+
* userAgent of BrowserContext
|
|
3187
3220
|
*/
|
|
3221
|
+
#bcUserAgent;
|
|
3188
3222
|
#userAgent;
|
|
3189
3223
|
#createTime;
|
|
3190
3224
|
#lastStatusUpdateTime;
|
|
@@ -3211,8 +3245,15 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3211
3245
|
if (this.#maxViewportOfNewPage) {
|
|
3212
3246
|
await lsdPage.maximizeViewport();
|
|
3213
3247
|
}
|
|
3214
|
-
if (this.#
|
|
3215
|
-
await lsdPage.setUserAgent(this.#
|
|
3248
|
+
if (this.#bcUserAgent) {
|
|
3249
|
+
await lsdPage.setUserAgent(this.#bcUserAgent);
|
|
3250
|
+
}
|
|
3251
|
+
}
|
|
3252
|
+
if (!this.#userAgent && this.#lsdPages.length > 0) {
|
|
3253
|
+
const lsdPage = this.#lsdPages[0];
|
|
3254
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
3255
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
3256
|
+
this.#userAgent = userAgent;
|
|
3216
3257
|
}
|
|
3217
3258
|
}
|
|
3218
3259
|
}
|
|
@@ -3229,6 +3270,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3229
3270
|
this.#browserContextIdx = browserContextIdx;
|
|
3230
3271
|
this.#browserContext = browserContext;
|
|
3231
3272
|
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
3273
|
+
this.#bcUserAgent = userAgent;
|
|
3232
3274
|
this.#userAgent = userAgent;
|
|
3233
3275
|
const currentTime = getCurrentUnixTime5();
|
|
3234
3276
|
this.#createTime = currentTime;
|
|
@@ -3259,9 +3301,6 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3259
3301
|
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime2, lastStatusUpdateTime: currentTime2, taskId: 0, relatedId: 0, misc: {} };
|
|
3260
3302
|
const lsdPage = new PuppeteerPage(this, page, pageInfo2);
|
|
3261
3303
|
this.#lsdPages.push(lsdPage);
|
|
3262
|
-
if (this.#userAgent) {
|
|
3263
|
-
await lsdPage.setUserAgent(this.#userAgent);
|
|
3264
|
-
}
|
|
3265
3304
|
if (this.#maxViewportOfNewPage) {
|
|
3266
3305
|
await lsdPage.maximizeViewport();
|
|
3267
3306
|
}
|
|
@@ -3389,6 +3428,9 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3389
3428
|
return null;
|
|
3390
3429
|
}
|
|
3391
3430
|
const page = await this.#browserContext.newPage();
|
|
3431
|
+
if (this.#bcUserAgent) {
|
|
3432
|
+
await page.setUserAgent({ userAgent: this.#bcUserAgent });
|
|
3433
|
+
}
|
|
3392
3434
|
await sleep2(2e3);
|
|
3393
3435
|
const pageInfo = page.pageInfo;
|
|
3394
3436
|
if (!pageInfo) {
|
|
@@ -3398,6 +3440,12 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3398
3440
|
}
|
|
3399
3441
|
lsdPage = this.#lsdPages.find((p) => p.isFree());
|
|
3400
3442
|
if (lsdPage) {
|
|
3443
|
+
if (!this.#userAgent) {
|
|
3444
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
3445
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
3446
|
+
this.#userAgent = userAgent;
|
|
3447
|
+
}
|
|
3448
|
+
}
|
|
3401
3449
|
lsdPage.use();
|
|
3402
3450
|
this.#freeGettingLock();
|
|
3403
3451
|
return lsdPage;
|
|
@@ -3504,6 +3552,9 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3504
3552
|
return false;
|
|
3505
3553
|
}
|
|
3506
3554
|
}
|
|
3555
|
+
userAgent() {
|
|
3556
|
+
return this.#userAgent;
|
|
3557
|
+
}
|
|
3507
3558
|
_origBrowserContext() {
|
|
3508
3559
|
return this.#browserContext;
|
|
3509
3560
|
}
|
|
@@ -3511,7 +3562,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
3511
3562
|
|
|
3512
3563
|
// src/puppeteer/browser.ts
|
|
3513
3564
|
var PuppeteerBrowser = class _PuppeteerBrowser extends EventEmitter6 {
|
|
3514
|
-
static #supportedBrowserTypes = ["chromium"];
|
|
3565
|
+
static #supportedBrowserTypes = ["chrome", "chromium"];
|
|
3515
3566
|
static doesSupport(browserType) {
|
|
3516
3567
|
return _PuppeteerBrowser.#supportedBrowserTypes.includes(browserType);
|
|
3517
3568
|
}
|
|
@@ -3621,8 +3672,12 @@ var PuppeteerBrowser = class _PuppeteerBrowser extends EventEmitter6 {
|
|
|
3621
3672
|
if (proxy?.proxyUrl) {
|
|
3622
3673
|
browserContextOptions.proxyServer = proxy.proxyUrl;
|
|
3623
3674
|
}
|
|
3675
|
+
let userAgent = options?.userAgent ? options.userAgent : this.#options.userAgent;
|
|
3676
|
+
const lsdLaunchOptions = this.#options;
|
|
3677
|
+
if (!userAgent && lsdLaunchOptions.headless && lsdLaunchOptions.headlessUserAgent) {
|
|
3678
|
+
userAgent = lsdLaunchOptions.headlessUserAgent;
|
|
3679
|
+
}
|
|
3624
3680
|
const browserContext = await this.#browser.createBrowserContext(browserContextOptions);
|
|
3625
|
-
const userAgent = options?.userAgent ? options.userAgent : "";
|
|
3626
3681
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
3627
3682
|
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
3628
3683
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
@@ -4062,6 +4117,9 @@ var CheerioPage = class extends EventEmitter7 {
|
|
|
4062
4117
|
use() {
|
|
4063
4118
|
throw new Error("Not supported in CheerioPage.");
|
|
4064
4119
|
}
|
|
4120
|
+
userAgent() {
|
|
4121
|
+
throw new Error("Not supported in CheerioPage.");
|
|
4122
|
+
}
|
|
4065
4123
|
waitForElement() {
|
|
4066
4124
|
throw new Error("Not supported in CheerioPage.");
|
|
4067
4125
|
}
|
|
@@ -5224,6 +5282,7 @@ var PatchrightPage = class extends EventEmitter8 {
|
|
|
5224
5282
|
requestMethod,
|
|
5225
5283
|
requestUrl,
|
|
5226
5284
|
requestData,
|
|
5285
|
+
resourceType: request.resourceType(),
|
|
5227
5286
|
responseData
|
|
5228
5287
|
});
|
|
5229
5288
|
loginfo(`##browser cache matched response: ${requestUrl}`);
|
|
@@ -5309,6 +5368,9 @@ var PatchrightPage = class extends EventEmitter8 {
|
|
|
5309
5368
|
logdbg(`##browser LsdPage ${this.#pageId} is allocated`);
|
|
5310
5369
|
return true;
|
|
5311
5370
|
}
|
|
5371
|
+
userAgent() {
|
|
5372
|
+
return this.#lsdBrowserContext.userAgent();
|
|
5373
|
+
}
|
|
5312
5374
|
async waitForElement(selector, options = {}) {
|
|
5313
5375
|
if (!this.#page) {
|
|
5314
5376
|
throw new Error("No valid page");
|
|
@@ -5333,7 +5395,7 @@ var PatchrightPage = class extends EventEmitter8 {
|
|
|
5333
5395
|
}
|
|
5334
5396
|
return true;
|
|
5335
5397
|
}
|
|
5336
|
-
async windowMember(keys) {
|
|
5398
|
+
async windowMember(keys, isolated = true) {
|
|
5337
5399
|
if (!this.#page) {
|
|
5338
5400
|
throw new Error("No valid page");
|
|
5339
5401
|
}
|
|
@@ -5372,7 +5434,8 @@ var PatchrightPage = class extends EventEmitter8 {
|
|
|
5372
5434
|
return "";
|
|
5373
5435
|
}
|
|
5374
5436
|
},
|
|
5375
|
-
keys
|
|
5437
|
+
keys,
|
|
5438
|
+
!!isolated
|
|
5376
5439
|
);
|
|
5377
5440
|
return content;
|
|
5378
5441
|
}
|
|
@@ -5423,6 +5486,7 @@ var PatchrightBrowserContext = class extends EventEmitter9 {
|
|
|
5423
5486
|
#browserContextIdx;
|
|
5424
5487
|
#browserContext;
|
|
5425
5488
|
#browserContextCreationMethod;
|
|
5489
|
+
#userAgent;
|
|
5426
5490
|
#apiContext;
|
|
5427
5491
|
#createTime;
|
|
5428
5492
|
#lastStatusUpdateTime;
|
|
@@ -5450,8 +5514,15 @@ var PatchrightBrowserContext = class extends EventEmitter9 {
|
|
|
5450
5514
|
await lsdPage.maximizeViewport();
|
|
5451
5515
|
}
|
|
5452
5516
|
}
|
|
5517
|
+
if (!this.#userAgent && this.#lsdPages.length > 0) {
|
|
5518
|
+
const lsdPage = this.#lsdPages[0];
|
|
5519
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
5520
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
5521
|
+
this.#userAgent = userAgent;
|
|
5522
|
+
}
|
|
5523
|
+
}
|
|
5453
5524
|
}
|
|
5454
|
-
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
5525
|
+
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
5455
5526
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
5456
5527
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
5457
5528
|
}
|
|
@@ -5464,6 +5535,7 @@ var PatchrightBrowserContext = class extends EventEmitter9 {
|
|
|
5464
5535
|
this.#browserContextIdx = browserContextIdx;
|
|
5465
5536
|
this.#browserContext = browserContext;
|
|
5466
5537
|
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
5538
|
+
this.#userAgent = userAgent;
|
|
5467
5539
|
const apiRequestContext = browserContext.request;
|
|
5468
5540
|
this.#apiContext = new PatchrightApiContext(apiRequestContext);
|
|
5469
5541
|
const currentTime = getCurrentUnixTime8();
|
|
@@ -5617,6 +5689,12 @@ var PatchrightBrowserContext = class extends EventEmitter9 {
|
|
|
5617
5689
|
}
|
|
5618
5690
|
lsdPage = this.#lsdPages.find((p) => p.isFree());
|
|
5619
5691
|
if (lsdPage) {
|
|
5692
|
+
if (!this.#userAgent) {
|
|
5693
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
5694
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
5695
|
+
this.#userAgent = userAgent;
|
|
5696
|
+
}
|
|
5697
|
+
}
|
|
5620
5698
|
lsdPage.use();
|
|
5621
5699
|
this.#freeGettingLock();
|
|
5622
5700
|
return lsdPage;
|
|
@@ -5723,6 +5801,9 @@ var PatchrightBrowserContext = class extends EventEmitter9 {
|
|
|
5723
5801
|
return false;
|
|
5724
5802
|
}
|
|
5725
5803
|
}
|
|
5804
|
+
userAgent() {
|
|
5805
|
+
return this.#userAgent;
|
|
5806
|
+
}
|
|
5726
5807
|
_origBrowserContext() {
|
|
5727
5808
|
return this.#browserContext;
|
|
5728
5809
|
}
|
|
@@ -5730,7 +5811,7 @@ var PatchrightBrowserContext = class extends EventEmitter9 {
|
|
|
5730
5811
|
|
|
5731
5812
|
// src/patchright/browser.ts
|
|
5732
5813
|
var PatchrightBrowser = class _PatchrightBrowser extends EventEmitter10 {
|
|
5733
|
-
static #supportedBrowserTypes = ["chromium", "firefox", "webkit"];
|
|
5814
|
+
static #supportedBrowserTypes = ["chrome", "chromium", "firefox", "webkit"];
|
|
5734
5815
|
static doesSupport(browserType) {
|
|
5735
5816
|
return _PatchrightBrowser.#supportedBrowserTypes.includes(browserType);
|
|
5736
5817
|
}
|
|
@@ -5792,7 +5873,7 @@ var PatchrightBrowser = class _PatchrightBrowser extends EventEmitter10 {
|
|
|
5792
5873
|
}
|
|
5793
5874
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : true;
|
|
5794
5875
|
for (const browserContext of browserContexts) {
|
|
5795
|
-
const lsdBrowserContext = new PatchrightBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
5876
|
+
const lsdBrowserContext = new PatchrightBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), "", maxViewportOfNewPage);
|
|
5796
5877
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
5797
5878
|
}
|
|
5798
5879
|
browser.on("disconnected" /* BROWSER_DISCONNECTED */, () => {
|
|
@@ -5844,12 +5925,17 @@ var PatchrightBrowser = class _PatchrightBrowser extends EventEmitter10 {
|
|
|
5844
5925
|
const { proxyUrl: server, username, password } = proxy;
|
|
5845
5926
|
browserContextOptions.proxy = { server, username, password };
|
|
5846
5927
|
}
|
|
5847
|
-
|
|
5848
|
-
|
|
5928
|
+
let userAgent = options?.userAgent ? options.userAgent : this.#options.userAgent;
|
|
5929
|
+
const lsdLaunchOptions = this.#options;
|
|
5930
|
+
if (!userAgent && lsdLaunchOptions.headless && lsdLaunchOptions.headlessUserAgent) {
|
|
5931
|
+
userAgent = lsdLaunchOptions.headlessUserAgent;
|
|
5932
|
+
}
|
|
5933
|
+
if (userAgent) {
|
|
5934
|
+
browserContextOptions.userAgent = userAgent;
|
|
5849
5935
|
}
|
|
5850
5936
|
const browserContext = await this.#browser.newContext(browserContextOptions);
|
|
5851
5937
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
5852
|
-
const lsdBrowserContext = new PatchrightBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
5938
|
+
const lsdBrowserContext = new PatchrightBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
5853
5939
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
5854
5940
|
return lsdBrowserContext;
|
|
5855
5941
|
}
|
|
@@ -7048,6 +7134,7 @@ var CamoufoxPage = class extends EventEmitter11 {
|
|
|
7048
7134
|
requestMethod,
|
|
7049
7135
|
requestUrl,
|
|
7050
7136
|
requestData,
|
|
7137
|
+
resourceType: request.resourceType(),
|
|
7051
7138
|
responseData
|
|
7052
7139
|
});
|
|
7053
7140
|
loginfo(`##browser cache matched response: ${requestUrl}`);
|
|
@@ -7133,6 +7220,9 @@ var CamoufoxPage = class extends EventEmitter11 {
|
|
|
7133
7220
|
logdbg(`##browser LsdPage ${this.#pageId} is allocated`);
|
|
7134
7221
|
return true;
|
|
7135
7222
|
}
|
|
7223
|
+
userAgent() {
|
|
7224
|
+
return this.#lsdBrowserContext.userAgent();
|
|
7225
|
+
}
|
|
7136
7226
|
async waitForElement(selector, options = {}) {
|
|
7137
7227
|
if (!this.#page) {
|
|
7138
7228
|
throw new Error("No valid page");
|
|
@@ -7247,6 +7337,7 @@ var CamoufoxBrowserContext = class extends EventEmitter12 {
|
|
|
7247
7337
|
#browserContextIdx;
|
|
7248
7338
|
#browserContext;
|
|
7249
7339
|
#browserContextCreationMethod;
|
|
7340
|
+
#userAgent;
|
|
7250
7341
|
#apiContext;
|
|
7251
7342
|
#createTime;
|
|
7252
7343
|
#lastStatusUpdateTime;
|
|
@@ -7274,8 +7365,15 @@ var CamoufoxBrowserContext = class extends EventEmitter12 {
|
|
|
7274
7365
|
await lsdPage.maximizeViewport();
|
|
7275
7366
|
}
|
|
7276
7367
|
}
|
|
7368
|
+
if (!this.#userAgent && this.#lsdPages.length > 0) {
|
|
7369
|
+
const lsdPage = this.#lsdPages[0];
|
|
7370
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
7371
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
7372
|
+
this.#userAgent = userAgent;
|
|
7373
|
+
}
|
|
7374
|
+
}
|
|
7277
7375
|
}
|
|
7278
|
-
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
7376
|
+
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
7279
7377
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
7280
7378
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
7281
7379
|
}
|
|
@@ -7288,6 +7386,7 @@ var CamoufoxBrowserContext = class extends EventEmitter12 {
|
|
|
7288
7386
|
this.#browserContextIdx = browserContextIdx;
|
|
7289
7387
|
this.#browserContext = browserContext;
|
|
7290
7388
|
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
7389
|
+
this.#userAgent = userAgent;
|
|
7291
7390
|
const apiRequestContext = browserContext.request;
|
|
7292
7391
|
this.#apiContext = new CamoufoxApiContext(apiRequestContext);
|
|
7293
7392
|
const currentTime = getCurrentUnixTime11();
|
|
@@ -7441,6 +7540,12 @@ var CamoufoxBrowserContext = class extends EventEmitter12 {
|
|
|
7441
7540
|
}
|
|
7442
7541
|
lsdPage = this.#lsdPages.find((p) => p.isFree());
|
|
7443
7542
|
if (lsdPage) {
|
|
7543
|
+
if (!this.#userAgent) {
|
|
7544
|
+
const userAgent = await lsdPage.evaluate(() => navigator.userAgent);
|
|
7545
|
+
if (typeof userAgent === "string" && userAgent) {
|
|
7546
|
+
this.#userAgent = userAgent;
|
|
7547
|
+
}
|
|
7548
|
+
}
|
|
7444
7549
|
lsdPage.use();
|
|
7445
7550
|
this.#freeGettingLock();
|
|
7446
7551
|
return lsdPage;
|
|
@@ -7547,6 +7652,9 @@ var CamoufoxBrowserContext = class extends EventEmitter12 {
|
|
|
7547
7652
|
return false;
|
|
7548
7653
|
}
|
|
7549
7654
|
}
|
|
7655
|
+
userAgent() {
|
|
7656
|
+
return this.#userAgent;
|
|
7657
|
+
}
|
|
7550
7658
|
_origBrowserContext() {
|
|
7551
7659
|
return this.#browserContext;
|
|
7552
7660
|
}
|
|
@@ -7616,7 +7724,7 @@ var CamoufoxBrowser = class _CamoufoxBrowser extends EventEmitter13 {
|
|
|
7616
7724
|
}
|
|
7617
7725
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : true;
|
|
7618
7726
|
for (const browserContext of browserContexts) {
|
|
7619
|
-
const lsdBrowserContext = new CamoufoxBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
7727
|
+
const lsdBrowserContext = new CamoufoxBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), "", maxViewportOfNewPage);
|
|
7620
7728
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
7621
7729
|
}
|
|
7622
7730
|
browser.on("disconnected" /* BROWSER_DISCONNECTED */, () => {
|
|
@@ -7668,12 +7776,17 @@ var CamoufoxBrowser = class _CamoufoxBrowser extends EventEmitter13 {
|
|
|
7668
7776
|
const { proxyUrl: server, username, password } = proxy;
|
|
7669
7777
|
browserContextOptions.proxy = { server, username, password };
|
|
7670
7778
|
}
|
|
7671
|
-
|
|
7672
|
-
|
|
7779
|
+
let userAgent = options?.userAgent ? options.userAgent : this.#options.userAgent;
|
|
7780
|
+
const lsdLaunchOptions = this.#options;
|
|
7781
|
+
if (!userAgent && lsdLaunchOptions.headless && lsdLaunchOptions.headlessUserAgent) {
|
|
7782
|
+
userAgent = lsdLaunchOptions.headlessUserAgent;
|
|
7783
|
+
}
|
|
7784
|
+
if (userAgent) {
|
|
7785
|
+
browserContextOptions.userAgent = userAgent;
|
|
7673
7786
|
}
|
|
7674
7787
|
const browserContext = await this.#browser.newContext(browserContextOptions);
|
|
7675
7788
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
7676
|
-
const lsdBrowserContext = new CamoufoxBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
7789
|
+
const lsdBrowserContext = new CamoufoxBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
7677
7790
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
7678
7791
|
return lsdBrowserContext;
|
|
7679
7792
|
}
|
|
@@ -7762,11 +7875,13 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7762
7875
|
}
|
|
7763
7876
|
this.#puppeteer = puppeteer;
|
|
7764
7877
|
this.#playwrightBrowserTypes = {
|
|
7878
|
+
chrome: playwright.chromium,
|
|
7765
7879
|
chromium: playwright.chromium,
|
|
7766
7880
|
firefox: playwright.firefox,
|
|
7767
7881
|
webkit: playwright.webkit
|
|
7768
7882
|
};
|
|
7769
7883
|
this.#patchrightBrowserTypes = {
|
|
7884
|
+
chrome: playwright.chromium,
|
|
7770
7885
|
chromium: patchright.chromium,
|
|
7771
7886
|
firefox: patchright.firefox,
|
|
7772
7887
|
webkit: patchright.webkit
|
|
@@ -7776,7 +7891,7 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7776
7891
|
_LsdBrowserController.#forbidConstructor = true;
|
|
7777
7892
|
}
|
|
7778
7893
|
#playwrightBrowserType(browserType, connectFlag = false) {
|
|
7779
|
-
if (browserType === "chromium") {
|
|
7894
|
+
if (browserType === "chrome" || browserType === "chromium") {
|
|
7780
7895
|
return this.#playwrightBrowserTypes.chromium;
|
|
7781
7896
|
} else if (connectFlag) {
|
|
7782
7897
|
throw new Error(`playwright only can connect to chromium browser, not support ${browserType} browser`);
|
|
@@ -7789,7 +7904,7 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7789
7904
|
}
|
|
7790
7905
|
}
|
|
7791
7906
|
#patchrightBrowserType(browserType, connectFlag = false) {
|
|
7792
|
-
if (browserType === "chromium") {
|
|
7907
|
+
if (browserType === "chrome" || browserType === "chromium") {
|
|
7793
7908
|
return this.#patchrightBrowserTypes.chromium;
|
|
7794
7909
|
} else if (connectFlag) {
|
|
7795
7910
|
throw new Error(`patchright only can connect to chromium browser, not support ${browserType} browser`);
|
|
@@ -7802,7 +7917,7 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7802
7917
|
}
|
|
7803
7918
|
}
|
|
7804
7919
|
#puppeteerProduct(browserType) {
|
|
7805
|
-
if (browserType === "chromium") {
|
|
7920
|
+
if (browserType === "chrome" || browserType === "chromium") {
|
|
7806
7921
|
return "chrome";
|
|
7807
7922
|
} else {
|
|
7808
7923
|
throw new Error(`Invalid puppeteer product ${browserType}`);
|
|
@@ -7819,6 +7934,7 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7819
7934
|
throw new Error(`BrowserControllerType ${browserControllerType} doesnot support browserType ${browserType}`);
|
|
7820
7935
|
}
|
|
7821
7936
|
switch (browserType) {
|
|
7937
|
+
case "chrome":
|
|
7822
7938
|
case "chromium":
|
|
7823
7939
|
case "firefox":
|
|
7824
7940
|
case "webkit":
|
|
@@ -7832,6 +7948,7 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7832
7948
|
throw new Error(`BrowserControllerType ${browserControllerType} doesnot support browserType ${browserType}`);
|
|
7833
7949
|
}
|
|
7834
7950
|
switch (browserType) {
|
|
7951
|
+
case "chrome":
|
|
7835
7952
|
case "chromium":
|
|
7836
7953
|
case "firefox":
|
|
7837
7954
|
case "webkit":
|
|
@@ -7866,11 +7983,12 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7866
7983
|
// incognito
|
|
7867
7984
|
proxyPerBrowserContext = false,
|
|
7868
7985
|
userDataDir = "",
|
|
7869
|
-
userAgent = ""
|
|
7986
|
+
userAgent = "",
|
|
7987
|
+
headlessUserAgent = ""
|
|
7870
7988
|
} = options ? options : {};
|
|
7871
7989
|
let browserPid = 0;
|
|
7872
7990
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : browserControllerType === "puppeteer" ? false : true;
|
|
7873
|
-
const actOptions = { closeFreePagesIntervalSeconds, maxBrowserContextsPerBrowser, maxPagesPerBrowserContext, maxPageFreeSeconds, maxViewportOfNewPage, proxy, timeout, args, executablePath, maxWindowSize, headless, minBrowserContexts, incognito, proxyPerBrowserContext, userDataDir, userAgent };
|
|
7991
|
+
const actOptions = { closeFreePagesIntervalSeconds, maxBrowserContextsPerBrowser, maxPagesPerBrowserContext, maxPageFreeSeconds, maxViewportOfNewPage, proxy, timeout, args, executablePath, maxWindowSize, headless, minBrowserContexts, incognito, proxyPerBrowserContext, userDataDir, userAgent, headlessUserAgent };
|
|
7874
7992
|
let idx = args.findIndex((arg) => arg.toLowerCase().startsWith("--incoginto"));
|
|
7875
7993
|
if (idx >= 0) {
|
|
7876
7994
|
logwarn(`##browser controller Please use options.incognito instead when launching new browser.`);
|
|
@@ -7892,6 +8010,11 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7892
8010
|
args.splice(idx, 1);
|
|
7893
8011
|
}
|
|
7894
8012
|
let lsdBrowser;
|
|
8013
|
+
if (browserType === "chrome" && ["playwright", "patchright", "puppeteer"].includes(browserControllerType)) {
|
|
8014
|
+
if (!executablePath) {
|
|
8015
|
+
throw new Error("Invalid executablePath when to launch chrome");
|
|
8016
|
+
}
|
|
8017
|
+
}
|
|
7895
8018
|
if (browserControllerType === "playwright") {
|
|
7896
8019
|
const launchOptions = { headless, timeout };
|
|
7897
8020
|
if (executablePath) {
|
|
@@ -7906,11 +8029,12 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7906
8029
|
} else if (proxyPerBrowserContext && browserType === "chromium" && this.#osPlatform.startsWith("win")) {
|
|
7907
8030
|
launchOptions.proxy = { server: "proxyPerBrowserContext" };
|
|
7908
8031
|
}
|
|
7909
|
-
if (browserType === "chromium") {
|
|
8032
|
+
if (browserType === "chrome" || browserType === "chromium") {
|
|
8033
|
+
if (browserType === "chrome") {
|
|
8034
|
+
launchOptions.channel = "chrome";
|
|
8035
|
+
}
|
|
7910
8036
|
if (incognito) {
|
|
7911
8037
|
args.push("--incognito");
|
|
7912
|
-
} else if (userDataDir) {
|
|
7913
|
-
args.push(`--user-data-dir=${userDataDir}`);
|
|
7914
8038
|
}
|
|
7915
8039
|
}
|
|
7916
8040
|
if (args.length > 0) {
|
|
@@ -7947,11 +8071,12 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7947
8071
|
} else if (proxyPerBrowserContext && browserType === "chromium" && this.#osPlatform.startsWith("win")) {
|
|
7948
8072
|
launchOptions.proxy = { server: "proxyPerBrowserContext" };
|
|
7949
8073
|
}
|
|
7950
|
-
if (browserType === "chromium") {
|
|
8074
|
+
if (browserType === "chrome" || browserType === "chromium") {
|
|
8075
|
+
if (browserType === "chrome") {
|
|
8076
|
+
launchOptions.channel = "chrome";
|
|
8077
|
+
}
|
|
7951
8078
|
if (incognito) {
|
|
7952
8079
|
args.push("--incognito");
|
|
7953
|
-
} else if (userDataDir) {
|
|
7954
|
-
args.push(`--user-data-dir=${userDataDir}`);
|
|
7955
8080
|
}
|
|
7956
8081
|
}
|
|
7957
8082
|
if (args.length > 0) {
|
|
@@ -7987,11 +8112,15 @@ var LsdBrowserController = class _LsdBrowserController {
|
|
|
7987
8112
|
if (!args.includes("--no-sandbox")) {
|
|
7988
8113
|
args.push("--no-sandbox");
|
|
7989
8114
|
}
|
|
7990
|
-
if (browserType === "chromium") {
|
|
8115
|
+
if (browserType === "chrome" || browserType === "chromium") {
|
|
8116
|
+
if (browserType === "chrome") {
|
|
8117
|
+
launchOptions.channel = "chrome";
|
|
8118
|
+
}
|
|
7991
8119
|
if (incognito) {
|
|
7992
8120
|
args.push("--incognito");
|
|
7993
|
-
}
|
|
7994
|
-
|
|
8121
|
+
}
|
|
8122
|
+
if (userDataDir) {
|
|
8123
|
+
launchOptions.userDataDir = userDataDir;
|
|
7995
8124
|
}
|
|
7996
8125
|
if (proxy?.proxyUrl && proxy.proxyUrl !== "default") {
|
|
7997
8126
|
args.push(`--proxy-server=${proxy.proxyUrl}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letsscrapedata/controller",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Unified browser / HTML controller interfaces that support patchright, camoufox, playwright, puppeteer and cheerio",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -44,20 +44,15 @@
|
|
|
44
44
|
"puppeteer",
|
|
45
45
|
"cheerio",
|
|
46
46
|
"crawler",
|
|
47
|
-
"scraper"
|
|
48
|
-
"apify"
|
|
47
|
+
"scraper"
|
|
49
48
|
],
|
|
50
49
|
"dependencies": {
|
|
51
|
-
"@letsscrapedata/utils": "^0.0.
|
|
50
|
+
"@letsscrapedata/utils": "^0.0.33",
|
|
52
51
|
"camoufox-js-lsd": "^0.6.5",
|
|
53
|
-
"cheerio": "^1.
|
|
54
|
-
"patchright": "^1.
|
|
55
|
-
"playwright": "^1.
|
|
56
|
-
"
|
|
57
|
-
"puppeteer": "^24.16.0",
|
|
58
|
-
"puppeteer-extra": "^3.3.6",
|
|
59
|
-
"puppeteer-extra-plugin-stealth": "^2.11.2",
|
|
60
|
-
"utils": "^0.3.1"
|
|
52
|
+
"cheerio": "^1.1.2",
|
|
53
|
+
"patchright": "^1.56.1",
|
|
54
|
+
"playwright": "^1.56.1",
|
|
55
|
+
"puppeteer": "^24.25.0"
|
|
61
56
|
},
|
|
62
57
|
"devDependencies": {
|
|
63
58
|
"@types/cheerio": "^0.22.35",
|