@hanivanrizky/nestjs-browser-action 0.7.0 → 0.8.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/README.md +36 -7
- package/dist/helpers/action-helpers.service.d.ts +1 -1
- package/dist/interfaces/browser-action-options.d.ts +6 -1
- package/dist/interfaces/cookie-options.d.ts +1 -1
- package/dist/services/browser-manager.service.d.ts +1 -1
- package/dist/services/browser-pool.service.d.ts +1 -2
- package/dist/services/browser-pool.service.js +19 -39
- package/dist/services/browser-pool.service.js.map +1 -1
- package/dist/services/cloak.loader.d.ts +1 -0
- package/dist/services/cloak.loader.js +6 -0
- package/dist/services/cloak.loader.js.map +1 -0
- package/dist/services/cookie.service.d.ts +1 -1
- package/dist/services/page-service.d.ts +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
>
|
|
8
8
|
> This project is currently in **experimental** stage and intended for **personal use only**. The API is subject to change, and production use is not recommended.
|
|
9
9
|
|
|
10
|
-
A NestJS module that provides
|
|
10
|
+
A NestJS module that provides stealth browser automation (CloakBrowser + puppeteer-core) with configurable options, connection pooling, and data cleansing capabilities.
|
|
11
11
|
|
|
12
12
|
## Features
|
|
13
13
|
|
|
@@ -19,6 +19,7 @@ A NestJS module that provides Puppeteer-based browser automation with configurab
|
|
|
19
19
|
- (°_°)! **Shadow DOM**: Support for web components
|
|
20
20
|
- (^_^) **Type-Safe**: Full TypeScript support with generics
|
|
21
21
|
- (^^) **Remote Chrome**: Connect to remote Chrome instances via CDP (browserURL/browserWSEndpoint)
|
|
22
|
+
- (•̀ᴗ•́) **Stealth**: Local launches use CloakBrowser stealth Chromium (proxy, humanize, geoip, timezone/locale spoofing)
|
|
22
23
|
|
|
23
24
|
## Installation
|
|
24
25
|
|
|
@@ -28,6 +29,8 @@ A NestJS module that provides Puppeteer-based browser automation with configurab
|
|
|
28
29
|
npm install @hanivanrizky/nestjs-browser-action
|
|
29
30
|
# or
|
|
30
31
|
yarn add @hanivanrizky/nestjs-browser-action
|
|
32
|
+
# or
|
|
33
|
+
pnpm add @hanivanrizky/nestjs-browser-action
|
|
31
34
|
```
|
|
32
35
|
|
|
33
36
|
### From GitHub
|
|
@@ -35,9 +38,9 @@ yarn add @hanivanrizky/nestjs-browser-action
|
|
|
35
38
|
```bash
|
|
36
39
|
npm install https://github.com/Hanivan/nestjs-browser-action.git
|
|
37
40
|
# or
|
|
38
|
-
|
|
41
|
+
pnpm add https://github.com/Hanivan/nestjs-browser-action.git
|
|
39
42
|
# or using SSH
|
|
40
|
-
|
|
43
|
+
pnpm add git@github.com:Hanivan/nestjs-browser-action.git
|
|
41
44
|
```
|
|
42
45
|
|
|
43
46
|
## Quick Start
|
|
@@ -179,6 +182,32 @@ const workflow = {
|
|
|
179
182
|
};
|
|
180
183
|
```
|
|
181
184
|
|
|
185
|
+
### Stealth (CloakBrowser)
|
|
186
|
+
|
|
187
|
+
Local browsers launch through CloakBrowser stealth Chromium. Configure anti-detect
|
|
188
|
+
features via the `cloak` option:
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
BrowserActionModule.forRoot({
|
|
192
|
+
cloak: {
|
|
193
|
+
proxy: { server: 'http://host:port', username: 'user', password: 'pass' },
|
|
194
|
+
humanize: true, // human-like mouse/typing
|
|
195
|
+
geoip: true, // spoof geolocation from proxy IP
|
|
196
|
+
timezone: 'America/New_York', // spoof timezone
|
|
197
|
+
locale: 'en-US', // spoof locale
|
|
198
|
+
stealthArgs: true, // anti-detect Chromium flags
|
|
199
|
+
extensionPaths: ['/path/ext'], // load unpacked extensions
|
|
200
|
+
userDataDir: './profile', // persistent profile (launchPersistentContext)
|
|
201
|
+
launchOptions: { headless: true, args: ['--no-sandbox'] }, // raw puppeteer-core passthrough
|
|
202
|
+
},
|
|
203
|
+
pool: { min: 2, max: 5 },
|
|
204
|
+
})
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
`launchOptions` (top-level) is also forwarded to CloakBrowser's `launchOptions`
|
|
208
|
+
passthrough for backward compatibility. `cloak` is ignored when `remote` is set
|
|
209
|
+
(remote uses plain CDP connect).
|
|
210
|
+
|
|
182
211
|
### Remote Chrome Connection
|
|
183
212
|
|
|
184
213
|
Connect to remote Chrome instances via Chrome DevTools Protocol (CDP):
|
|
@@ -271,16 +300,16 @@ const workflow = await this.actionHelpers.scrapeWithActions<{
|
|
|
271
300
|
|
|
272
301
|
```bash
|
|
273
302
|
# Build
|
|
274
|
-
|
|
303
|
+
pnpm build
|
|
275
304
|
|
|
276
305
|
# Run tests
|
|
277
|
-
|
|
306
|
+
pnpm test
|
|
278
307
|
|
|
279
308
|
# Lint code
|
|
280
|
-
|
|
309
|
+
pnpm lint
|
|
281
310
|
|
|
282
311
|
# Format code
|
|
283
|
-
|
|
312
|
+
pnpm format
|
|
284
313
|
```
|
|
285
314
|
|
|
286
315
|
### Git Hooks
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Page, ScreenshotOptions, PDFOptions } from 'puppeteer';
|
|
1
|
+
import type { Page, ScreenshotOptions, PDFOptions } from 'puppeteer-core';
|
|
2
2
|
import { PageService } from '../services/page-service';
|
|
3
3
|
import { CookieService } from '../services/cookie.service';
|
|
4
4
|
import { CleansingService } from '../services/cleansing.service';
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { LogLevel } from '@nestjs/common';
|
|
2
|
-
import type { BrowserContextOptions, LaunchOptions } from 'puppeteer';
|
|
2
|
+
import type { BrowserContextOptions, LaunchOptions } from 'puppeteer-core';
|
|
3
|
+
import type { LaunchOptions as CloakLaunchOptions } from 'cloakbrowser';
|
|
3
4
|
import { PoolOptions } from './pool-options';
|
|
5
|
+
export type CloakOptions = CloakLaunchOptions & {
|
|
6
|
+
userDataDir?: string;
|
|
7
|
+
};
|
|
4
8
|
export interface CookieOptions {
|
|
5
9
|
enabled?: boolean;
|
|
6
10
|
cookiesDir?: string;
|
|
@@ -16,6 +20,7 @@ export interface RemoteOptions {
|
|
|
16
20
|
}
|
|
17
21
|
export interface BrowserActionOptions {
|
|
18
22
|
launchOptions?: LaunchOptions;
|
|
23
|
+
cloak?: CloakOptions;
|
|
19
24
|
contextOptions?: BrowserContextOptions;
|
|
20
25
|
pool?: PoolOptions;
|
|
21
26
|
multiContext?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
import type { Browser } from 'puppeteer';
|
|
2
|
+
import type { Browser } from 'puppeteer-core';
|
|
3
3
|
import type { BrowserActionOptions } from '../interfaces/browser-action-options';
|
|
4
4
|
import type { LogLevel } from '@nestjs/common';
|
|
5
5
|
export declare class BrowserPoolService implements OnModuleInit, OnModuleDestroy {
|
|
@@ -9,7 +9,6 @@ export declare class BrowserPoolService implements OnModuleInit, OnModuleDestroy
|
|
|
9
9
|
private available;
|
|
10
10
|
private inUse;
|
|
11
11
|
private disconnectListeners;
|
|
12
|
-
private launchOptions;
|
|
13
12
|
private minSize;
|
|
14
13
|
private maxSize;
|
|
15
14
|
private currentIndex;
|
|
@@ -1,43 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
7
|
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
10
|
};
|
|
@@ -48,10 +15,11 @@ var BrowserPoolService_1;
|
|
|
48
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
16
|
exports.BrowserPoolService = void 0;
|
|
50
17
|
const common_1 = require("@nestjs/common");
|
|
51
|
-
const
|
|
18
|
+
const puppeteer_core_1 = require("puppeteer-core");
|
|
52
19
|
const browser_action_constants_1 = require("../constants/browser-action.constants");
|
|
53
20
|
const logger_util_1 = require("../helpers/logger.util");
|
|
54
21
|
const delay_util_1 = require("../helpers/delay.util");
|
|
22
|
+
const cloak_loader_1 = require("./cloak.loader");
|
|
55
23
|
let BrowserPoolService = BrowserPoolService_1 = class BrowserPoolService {
|
|
56
24
|
options;
|
|
57
25
|
logger;
|
|
@@ -59,7 +27,6 @@ let BrowserPoolService = BrowserPoolService_1 = class BrowserPoolService {
|
|
|
59
27
|
available = new Set();
|
|
60
28
|
inUse = new Set();
|
|
61
29
|
disconnectListeners = new Map();
|
|
62
|
-
launchOptions = {};
|
|
63
30
|
minSize = browser_action_constants_1.DEFAULT_POOL_OPTIONS.min;
|
|
64
31
|
maxSize = browser_action_constants_1.DEFAULT_POOL_OPTIONS.max;
|
|
65
32
|
currentIndex = 0;
|
|
@@ -68,7 +35,6 @@ let BrowserPoolService = BrowserPoolService_1 = class BrowserPoolService {
|
|
|
68
35
|
this.logger = new logger_util_1.LoggerWithLevel(BrowserPoolService_1.name, options.logLevel || 'log');
|
|
69
36
|
}
|
|
70
37
|
async onModuleInit() {
|
|
71
|
-
this.launchOptions = this.options.launchOptions || {};
|
|
72
38
|
this.minSize = this.options.pool?.min || browser_action_constants_1.DEFAULT_POOL_OPTIONS.min;
|
|
73
39
|
this.maxSize = this.options.pool?.max || browser_action_constants_1.DEFAULT_POOL_OPTIONS.max;
|
|
74
40
|
this.validateRemoteOptions(this.options.remote);
|
|
@@ -80,7 +46,7 @@ let BrowserPoolService = BrowserPoolService_1 = class BrowserPoolService {
|
|
|
80
46
|
this.logger.log(`Browser mode: Remote CDP (WebSocket: ${remote.browserWSEndpoint})`);
|
|
81
47
|
}
|
|
82
48
|
else {
|
|
83
|
-
this.logger.log('Browser mode: Local
|
|
49
|
+
this.logger.log('Browser mode: Local CloakBrowser (stealth Chromium)');
|
|
84
50
|
}
|
|
85
51
|
this.logger.warn('Call app.enableShutdownHooks() in main.ts to ensure graceful browser cleanup on Ctrl+C');
|
|
86
52
|
this.logger.log(`Initializing browser pool (min: ${this.minSize}, max: ${this.maxSize})`);
|
|
@@ -110,7 +76,21 @@ let BrowserPoolService = BrowserPoolService_1 = class BrowserPoolService {
|
|
|
110
76
|
if (this.options.remote) {
|
|
111
77
|
return await this.connectWithRetry(this.options.remote);
|
|
112
78
|
}
|
|
113
|
-
const
|
|
79
|
+
const { launch, launchPersistentContext } = await (0, cloak_loader_1.loadCloakPuppeteer)();
|
|
80
|
+
const cloak = this.options.cloak ?? {};
|
|
81
|
+
const cloakOptions = {
|
|
82
|
+
...cloak,
|
|
83
|
+
launchOptions: {
|
|
84
|
+
...(cloak.launchOptions ?? {}),
|
|
85
|
+
...this.options.launchOptions,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
const browser = cloak.userDataDir
|
|
89
|
+
? await launchPersistentContext({
|
|
90
|
+
...cloakOptions,
|
|
91
|
+
userDataDir: cloak.userDataDir,
|
|
92
|
+
})
|
|
93
|
+
: await launch(cloakOptions);
|
|
114
94
|
const disconnectHandler = () => {
|
|
115
95
|
this.logger.warn('Browser disconnected');
|
|
116
96
|
};
|
|
@@ -131,7 +111,7 @@ let BrowserPoolService = BrowserPoolService_1 = class BrowserPoolService {
|
|
|
131
111
|
for (let attempt = 1; attempt <= retryMax; attempt++) {
|
|
132
112
|
try {
|
|
133
113
|
this.logger.debug(`Connecting to remote Chrome (attempt ${attempt}/${retryMax})`);
|
|
134
|
-
const browser = await
|
|
114
|
+
const browser = await (0, puppeteer_core_1.connect)(connectOptions);
|
|
135
115
|
const disconnectHandler = () => {
|
|
136
116
|
this.logger.warn('Remote Chrome disconnected');
|
|
137
117
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-pool.service.js","sourceRoot":"","sources":["../../src/services/browser-pool.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browser-pool.service.js","sourceRoot":"","sources":["../../src/services/browser-pool.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const loadCloakPuppeteer: () => Promise<typeof import("cloakbrowser/puppeteer", { with: { "resolution-mode": "import" } })>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadCloakPuppeteer = void 0;
|
|
4
|
+
const loadCloakPuppeteer = () => import('cloakbrowser/puppeteer');
|
|
5
|
+
exports.loadCloakPuppeteer = loadCloakPuppeteer;
|
|
6
|
+
//# sourceMappingURL=cloak.loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloak.loader.js","sourceRoot":"","sources":["../../src/services/cloak.loader.ts"],"names":[],"mappings":";;;AAGO,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAA5D,QAAA,kBAAkB,sBAA0C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Page } from 'puppeteer';
|
|
1
|
+
import type { Page } from 'puppeteer-core';
|
|
2
2
|
import type { BrowserActionOptions } from '../interfaces/browser-action-options';
|
|
3
3
|
import type { CookieSaveOptions, CookieLoadOptions, CookieSession, CookieSessionInfo } from '../interfaces/cookie-options';
|
|
4
4
|
export declare class CookieService {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Browser, Page, WaitForOptions } from 'puppeteer';
|
|
1
|
+
import type { Browser, Page, WaitForOptions } from 'puppeteer-core';
|
|
2
2
|
import { BrowserManagerService } from './browser-manager.service';
|
|
3
3
|
import type { LogLevel } from '@nestjs/common';
|
|
4
4
|
export declare class PageService {
|