real-browser-mcp-server 1.4.7 → 1.5.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/README.md +6 -10
- package/dist/lib/cjs/index.js +2 -381
- package/dist/lib/cjs/index.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -13
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/handlers/browser.d.ts.map +1 -1
- package/dist/src/mcp/handlers/browser.js +18 -2
- package/dist/src/mcp/handlers/browser.js.map +1 -1
- package/dist/src/mcp/handlers/dom.js +5 -5
- package/dist/src/mcp/handlers/dom.js.map +1 -1
- package/dist/src/mcp/handlers/helpers.d.ts +7 -3
- package/dist/src/mcp/handlers/helpers.d.ts.map +1 -1
- package/dist/src/mcp/handlers/helpers.js +21 -176
- package/dist/src/mcp/handlers/helpers.js.map +1 -1
- package/dist/src/mcp/handlers/index.d.ts.map +1 -1
- package/dist/src/mcp/handlers/index.js +11 -0
- package/dist/src/mcp/handlers/index.js.map +1 -1
- package/dist/src/mcp/handlers/network.d.ts +95 -12
- package/dist/src/mcp/handlers/network.d.ts.map +1 -1
- package/dist/src/mcp/handlers/network.js +73 -48
- package/dist/src/mcp/handlers/network.js.map +1 -1
- package/dist/src/mcp/handlers/utility-handlers.d.ts +47 -18
- package/dist/src/mcp/handlers/utility-handlers.d.ts.map +1 -1
- package/dist/src/mcp/handlers/utility-handlers.js +79 -70
- package/dist/src/mcp/handlers/utility-handlers.js.map +1 -1
- package/dist/src/mcp/handlers/vision.d.ts +143 -41
- package/dist/src/mcp/handlers/vision.d.ts.map +1 -1
- package/dist/src/mcp/handlers/vision.js +148 -76
- package/dist/src/mcp/handlers/vision.js.map +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +1 -12
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +6 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/shared/colors.d.ts +12 -0
- package/dist/src/shared/colors.d.ts.map +1 -0
- package/dist/src/shared/colors.js +15 -0
- package/dist/src/shared/colors.js.map +1 -0
- package/dist/src/shared/lib-core.d.ts +17 -0
- package/dist/src/shared/lib-core.d.ts.map +1 -0
- package/dist/src/shared/lib-core.js +421 -0
- package/dist/src/shared/lib-core.js.map +1 -0
- package/dist/src/shared/tools.d.ts.map +1 -1
- package/dist/src/shared/tools.js +64 -49
- package/dist/src/shared/tools.js.map +1 -1
- package/dist/test/cjs/test.js +61 -104
- package/dist/test/cjs/test.js.map +1 -1
- package/dist/test/mcp/smoke-test.d.ts +1 -1
- package/dist/test/mcp/smoke-test.d.ts.map +1 -1
- package/dist/test/mcp/smoke-test.js +8 -2
- package/dist/test/mcp/smoke-test.js.map +1 -1
- package/lib/esm/index.mjs +2 -396
- package/package.json +1 -1
|
@@ -0,0 +1,421 @@
|
|
|
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
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadEnvFile = loadEnvFile;
|
|
37
|
+
exports.getDefaultHeadless = getDefaultHeadless;
|
|
38
|
+
exports.setupRealPage = setupRealPage;
|
|
39
|
+
exports.getBraveExecutablePath = getBraveExecutablePath;
|
|
40
|
+
exports.applyUserAgentOverride = applyUserAgentOverride;
|
|
41
|
+
exports.createConnect = createConnect;
|
|
42
|
+
// @ts-nocheck
|
|
43
|
+
const patchright_1 = require("patchright");
|
|
44
|
+
const ghost_cursor_patchright_1 = require("ghost-cursor-patchright");
|
|
45
|
+
const adblocker_playwright_1 = require("@ghostery/adblocker-playwright");
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const state_1 = require("../mcp/handlers/state");
|
|
49
|
+
let adBlockerInstance = null;
|
|
50
|
+
let adBlockerPromise = null;
|
|
51
|
+
function getAdBlocker() {
|
|
52
|
+
if (!adBlockerPromise) {
|
|
53
|
+
const cachePath = path.join(__dirname, 'adblocker.bin');
|
|
54
|
+
adBlockerPromise = adblocker_playwright_1.PlaywrightBlocker.fromPrebuiltAdsAndTracking(fetch, {
|
|
55
|
+
path: cachePath,
|
|
56
|
+
read: fs.promises.readFile,
|
|
57
|
+
write: fs.promises.writeFile,
|
|
58
|
+
}).then(blocker => {
|
|
59
|
+
adBlockerInstance = blocker;
|
|
60
|
+
return blocker;
|
|
61
|
+
}).catch(err => {
|
|
62
|
+
console.error('[adblocker] Failed to initialize adblocker:', err.message);
|
|
63
|
+
return null;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return adBlockerPromise;
|
|
67
|
+
}
|
|
68
|
+
function loadEnvFile() {
|
|
69
|
+
const envPaths = [
|
|
70
|
+
path.join(process.cwd(), '.env'),
|
|
71
|
+
];
|
|
72
|
+
let currentDir = process.cwd();
|
|
73
|
+
for (let i = 0; i < 5; i++) {
|
|
74
|
+
const envPath = path.join(currentDir, '.env');
|
|
75
|
+
if (fs.existsSync(envPath) && !envPaths.includes(envPath)) {
|
|
76
|
+
envPaths.push(envPath);
|
|
77
|
+
}
|
|
78
|
+
const parentDir = path.dirname(currentDir);
|
|
79
|
+
if (parentDir === currentDir)
|
|
80
|
+
break;
|
|
81
|
+
currentDir = parentDir;
|
|
82
|
+
}
|
|
83
|
+
for (const envPath of envPaths) {
|
|
84
|
+
try {
|
|
85
|
+
if (fs.existsSync(envPath)) {
|
|
86
|
+
const envContent = fs.readFileSync(envPath, 'utf-8');
|
|
87
|
+
envContent.split('\n').forEach(line => {
|
|
88
|
+
const trimmed = line.trim();
|
|
89
|
+
if (trimmed && !trimmed.startsWith('#')) {
|
|
90
|
+
const [key, ...valueParts] = trimmed.split('=');
|
|
91
|
+
const value = valueParts.join('=').replace(/^["']|["']$/g, '');
|
|
92
|
+
if (key && !process.env[key]) {
|
|
93
|
+
process.env[key] = value;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// Silently ignore .env loading errors
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function getDefaultHeadless() {
|
|
106
|
+
return (0, state_1.getHeadlessFromEnv)();
|
|
107
|
+
}
|
|
108
|
+
function setupRealPage(browser, page) {
|
|
109
|
+
if (page._setupApplied)
|
|
110
|
+
return page;
|
|
111
|
+
page._setupApplied = true;
|
|
112
|
+
// Enable ad blocker
|
|
113
|
+
if (adBlockerInstance) {
|
|
114
|
+
adBlockerInstance.enableBlockingInPage(page).catch(() => { });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
getAdBlocker().then(blocker => {
|
|
118
|
+
if (blocker) {
|
|
119
|
+
blocker.enableBlockingInPage(page).catch(() => { });
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// Human-like smooth scrolling with 60FPS Cubic Ease-Out physics
|
|
124
|
+
page.realScroll = async (deltaY, duration = 600) => {
|
|
125
|
+
try {
|
|
126
|
+
const stepDelay = 15; // ~60 FPS
|
|
127
|
+
const steps = Math.max(10, Math.floor(duration / stepDelay));
|
|
128
|
+
const easeOutCubic = (t) => 1 - Math.pow(1 - t, 3);
|
|
129
|
+
let currentScroll = 0;
|
|
130
|
+
for (let i = 1; i <= steps; i++) {
|
|
131
|
+
const t = i / steps;
|
|
132
|
+
const targetScroll = deltaY * easeOutCubic(t);
|
|
133
|
+
const diff = targetScroll - currentScroll;
|
|
134
|
+
await page.mouse.wheel(0, diff);
|
|
135
|
+
currentScroll = targetScroll;
|
|
136
|
+
await new Promise(r => setTimeout(r, stepDelay));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
// Fallback to native window scroll in case of wheel errors
|
|
141
|
+
try {
|
|
142
|
+
await page.evaluate((y) => window.scrollBy({ top: y, behavior: 'smooth' }), deltaY);
|
|
143
|
+
}
|
|
144
|
+
catch (_) { }
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
// Ghost Cursor integration - Bézier curve human-like mouse movement
|
|
148
|
+
try {
|
|
149
|
+
const cursor = (0, ghost_cursor_patchright_1.createCursor)(page);
|
|
150
|
+
page.realCursor = {
|
|
151
|
+
move: async (selector, options = {}) => {
|
|
152
|
+
try {
|
|
153
|
+
await cursor.actions.move(selector, options);
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
// Fallback to native hover if ghost-cursor fails
|
|
157
|
+
try {
|
|
158
|
+
await page.hover(selector);
|
|
159
|
+
}
|
|
160
|
+
catch (_) { }
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
page.realClick = async (selector, options = {}) => {
|
|
165
|
+
try {
|
|
166
|
+
await cursor.actions.click({ target: selector, ...options });
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
// Fallback to native click if ghost-cursor fails
|
|
170
|
+
await page.click(selector, options);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
// Fallback if ghost-cursor-patchright fails to initialize
|
|
176
|
+
if (!page.realClick) {
|
|
177
|
+
page.realClick = async (selector, options) => {
|
|
178
|
+
await page.click(selector, options);
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
if (!page.realCursor) {
|
|
182
|
+
page.realCursor = {
|
|
183
|
+
move: async (selector) => {
|
|
184
|
+
try {
|
|
185
|
+
await page.hover(selector);
|
|
186
|
+
}
|
|
187
|
+
catch (_) { }
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return page;
|
|
193
|
+
}
|
|
194
|
+
function getBraveExecutablePath() {
|
|
195
|
+
if (process.env.BRAVE_PATH && fs.existsSync(process.env.BRAVE_PATH)) {
|
|
196
|
+
return process.env.BRAVE_PATH;
|
|
197
|
+
}
|
|
198
|
+
const platform = process.platform;
|
|
199
|
+
const { execSync } = require('child_process');
|
|
200
|
+
// Try automatic scanning via CLI / registry query
|
|
201
|
+
if (platform === 'win32') {
|
|
202
|
+
const regQueries = [
|
|
203
|
+
'reg query "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\brave.exe" /ve',
|
|
204
|
+
'reg query "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\brave.exe" /ve',
|
|
205
|
+
'reg query "HKEY_LOCAL_MACHINE\\SOFTWARE\\Clients\\StartMenuInternet\\Brave-Browser\\shell\\open\\command" /ve'
|
|
206
|
+
];
|
|
207
|
+
for (const cmd of regQueries) {
|
|
208
|
+
try {
|
|
209
|
+
const output = execSync(cmd, { stdio: ['ignore', 'pipe', 'ignore'] }).toString();
|
|
210
|
+
const match = output.match(/REG_SZ\s+(.*)/);
|
|
211
|
+
if (match && match[1]) {
|
|
212
|
+
let p = match[1].trim().replace(/^"|"$/g, '');
|
|
213
|
+
if (!p.toLowerCase().endsWith('.exe')) {
|
|
214
|
+
const exeIndex = p.toLowerCase().indexOf('.exe');
|
|
215
|
+
if (exeIndex !== -1) {
|
|
216
|
+
p = p.substring(0, exeIndex + 4).replace(/^"|"$/g, '');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (fs.existsSync(p))
|
|
220
|
+
return p;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch (e) { }
|
|
224
|
+
}
|
|
225
|
+
try {
|
|
226
|
+
const output = execSync('where brave.exe', { stdio: ['ignore', 'pipe', 'ignore'] }).toString().trim().split('\r\n')[0];
|
|
227
|
+
if (output && fs.existsSync(output))
|
|
228
|
+
return output;
|
|
229
|
+
}
|
|
230
|
+
catch (e) { }
|
|
231
|
+
}
|
|
232
|
+
else if (platform === 'darwin') {
|
|
233
|
+
try {
|
|
234
|
+
const output = execSync('mdfind "kMDItemCFBundleIdentifier == \'com.brave.Browser\'"', { stdio: ['ignore', 'pipe', 'ignore'] }).toString().trim().split('\n')[0];
|
|
235
|
+
if (output) {
|
|
236
|
+
const p = path.join(output, 'Contents', 'MacOS', 'Brave Browser');
|
|
237
|
+
if (fs.existsSync(p))
|
|
238
|
+
return p;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (e) { }
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
try {
|
|
245
|
+
const output = execSync('which brave-browser || which brave', { stdio: ['ignore', 'pipe', 'ignore'] }).toString().trim();
|
|
246
|
+
if (output && fs.existsSync(output))
|
|
247
|
+
return output;
|
|
248
|
+
}
|
|
249
|
+
catch (e) { }
|
|
250
|
+
}
|
|
251
|
+
// Fallback to hardcoded common paths
|
|
252
|
+
let paths = [];
|
|
253
|
+
if (platform === 'win32') {
|
|
254
|
+
paths = [
|
|
255
|
+
path.join(process.env.PROGRAMFILES || 'C:\\Program Files', 'BraveSoftware', 'Brave-Browser', 'Application', 'brave.exe'),
|
|
256
|
+
path.join(process.env['PROGRAMFILES(X86)'] || 'C:\\Program Files (x86)', 'BraveSoftware', 'Brave-Browser', 'Application', 'brave.exe'),
|
|
257
|
+
path.join(process.env.LOCALAPPDATA || '', 'BraveSoftware', 'Brave-Browser', 'Application', 'brave.exe')
|
|
258
|
+
].filter(p => p);
|
|
259
|
+
}
|
|
260
|
+
else if (platform === 'darwin') {
|
|
261
|
+
paths = [
|
|
262
|
+
'/Applications/Brave Browser.app/Contents/MacOS/Brave Browser'
|
|
263
|
+
];
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
paths = [
|
|
267
|
+
'/usr/bin/brave-browser',
|
|
268
|
+
'/usr/bin/brave',
|
|
269
|
+
'/usr/bin/brave-browser-stable',
|
|
270
|
+
'/usr/bin/brave-browser-beta',
|
|
271
|
+
'/usr/bin/brave-browser-nightly',
|
|
272
|
+
'/usr/local/bin/brave-browser',
|
|
273
|
+
'/usr/local/bin/brave'
|
|
274
|
+
];
|
|
275
|
+
}
|
|
276
|
+
for (const p of paths) {
|
|
277
|
+
if (p && fs.existsSync(p)) {
|
|
278
|
+
return p;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
async function applyUserAgentOverride(page, userAgent, userAgentMetadata) {
|
|
284
|
+
try {
|
|
285
|
+
const client = await page.context().newCDPSession(page);
|
|
286
|
+
await client.send('Emulation.setUserAgentOverride', {
|
|
287
|
+
userAgent: userAgent,
|
|
288
|
+
userAgentMetadata: userAgentMetadata
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
catch (e) {
|
|
292
|
+
// Ignore errors
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function createConnect(pageController) {
|
|
296
|
+
return async function connect({ args = [], headless = getDefaultHeadless(), proxy = {}, contextOptions = {}, turnstile = false, executablePath = undefined, } = {}) {
|
|
297
|
+
let playwrightProxy = undefined;
|
|
298
|
+
if (proxy && proxy.host && proxy.port) {
|
|
299
|
+
playwrightProxy = {
|
|
300
|
+
server: `${proxy.host}:${proxy.port}`
|
|
301
|
+
};
|
|
302
|
+
if (proxy.username && proxy.password) {
|
|
303
|
+
playwrightProxy.username = proxy.username;
|
|
304
|
+
playwrightProxy.password = proxy.password;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// 1. Launch a temporary browser to retrieve the native user agent and properties
|
|
308
|
+
const tempBrowser = await patchright_1.chromium.launch({
|
|
309
|
+
headless: true,
|
|
310
|
+
args: ['--no-sandbox', '--disable-setuid-sandbox'],
|
|
311
|
+
...(executablePath ? { executablePath } : {}),
|
|
312
|
+
});
|
|
313
|
+
const tempContext = await tempBrowser.newContext();
|
|
314
|
+
const tempPage = await tempContext.newPage();
|
|
315
|
+
let nativeUa = '';
|
|
316
|
+
let isBrave = false;
|
|
317
|
+
try {
|
|
318
|
+
nativeUa = await tempPage.evaluate(() => navigator.userAgent);
|
|
319
|
+
isBrave = await tempPage.evaluate(() => typeof navigator.brave !== 'undefined');
|
|
320
|
+
}
|
|
321
|
+
catch (e) {
|
|
322
|
+
nativeUa = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/148.0.0.0 Safari/537.36';
|
|
323
|
+
isBrave = executablePath && executablePath.toLowerCase().includes('brave');
|
|
324
|
+
}
|
|
325
|
+
await tempBrowser.close();
|
|
326
|
+
let modifiedUa = nativeUa.replace(/HeadlessChrome\//g, 'Chrome/');
|
|
327
|
+
const chromeVersionMatch = modifiedUa.match(/Chrome\/([\d.]+)/);
|
|
328
|
+
const chromeVersion = chromeVersionMatch ? chromeVersionMatch[1] : '148.0.0.0';
|
|
329
|
+
const majorVersion = chromeVersion.split('.')[0];
|
|
330
|
+
const brands = [
|
|
331
|
+
{ brand: 'Chromium', version: majorVersion },
|
|
332
|
+
{ brand: 'Not/A)Brand', version: '99' }
|
|
333
|
+
];
|
|
334
|
+
if (isBrave) {
|
|
335
|
+
brands.unshift({ brand: 'Brave', version: majorVersion });
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
brands.unshift({ brand: 'Google Chrome', version: majorVersion });
|
|
339
|
+
}
|
|
340
|
+
let platformName = 'Windows';
|
|
341
|
+
if (nativeUa.includes('Macintosh') || nativeUa.includes('Mac OS X')) {
|
|
342
|
+
platformName = 'macOS';
|
|
343
|
+
}
|
|
344
|
+
else if (nativeUa.includes('Linux')) {
|
|
345
|
+
platformName = 'Linux';
|
|
346
|
+
}
|
|
347
|
+
const fullVersionList = [
|
|
348
|
+
{ brand: 'Chromium', version: chromeVersion },
|
|
349
|
+
{ brand: 'Not/A)Brand', version: '99.0.0.0' }
|
|
350
|
+
];
|
|
351
|
+
if (isBrave) {
|
|
352
|
+
fullVersionList.unshift({ brand: 'Brave', version: chromeVersion });
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
fullVersionList.unshift({ brand: 'Google Chrome', version: chromeVersion });
|
|
356
|
+
}
|
|
357
|
+
const userAgentMetadata = {
|
|
358
|
+
brands: brands,
|
|
359
|
+
fullVersionList: fullVersionList,
|
|
360
|
+
fullVersion: chromeVersion,
|
|
361
|
+
mobile: false,
|
|
362
|
+
platform: platformName,
|
|
363
|
+
platformVersion: platformName === 'macOS' ? '14.0.0' : platformName === 'Linux' ? '6.0.0' : '10.0.0',
|
|
364
|
+
architecture: 'x86',
|
|
365
|
+
model: '',
|
|
366
|
+
bitness: '64',
|
|
367
|
+
wow64: false
|
|
368
|
+
};
|
|
369
|
+
const chromiumArgs = [
|
|
370
|
+
`--user-agent=${modifiedUa}`,
|
|
371
|
+
'--disable-blink-features=AutomationControlled',
|
|
372
|
+
'--no-sandbox',
|
|
373
|
+
'--disable-setuid-sandbox',
|
|
374
|
+
...args
|
|
375
|
+
];
|
|
376
|
+
// If headless is true, we run with headless: false but pass '--headless=new' to args.
|
|
377
|
+
let launchHeadless = headless;
|
|
378
|
+
if (headless === true) {
|
|
379
|
+
launchHeadless = false;
|
|
380
|
+
if (!chromiumArgs.includes('--headless=new')) {
|
|
381
|
+
chromiumArgs.push('--headless=new');
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
const browser = await patchright_1.chromium.launch({
|
|
385
|
+
headless: launchHeadless,
|
|
386
|
+
args: chromiumArgs,
|
|
387
|
+
proxy: playwrightProxy,
|
|
388
|
+
...(executablePath ? { executablePath } : {}),
|
|
389
|
+
});
|
|
390
|
+
// Ensure ad blocker is ready
|
|
391
|
+
await getAdBlocker();
|
|
392
|
+
const context = await browser.newContext({
|
|
393
|
+
viewport: null,
|
|
394
|
+
...contextOptions,
|
|
395
|
+
});
|
|
396
|
+
let page = await context.newPage();
|
|
397
|
+
await applyUserAgentOverride(page, modifiedUa, userAgentMetadata);
|
|
398
|
+
setupRealPage(browser, page);
|
|
399
|
+
page = await pageController({
|
|
400
|
+
browser,
|
|
401
|
+
page,
|
|
402
|
+
proxy,
|
|
403
|
+
turnstile,
|
|
404
|
+
});
|
|
405
|
+
context.on('page', async (newPage) => {
|
|
406
|
+
await applyUserAgentOverride(newPage, modifiedUa, userAgentMetadata);
|
|
407
|
+
setupRealPage(browser, newPage);
|
|
408
|
+
await pageController({
|
|
409
|
+
browser,
|
|
410
|
+
page: newPage,
|
|
411
|
+
proxy,
|
|
412
|
+
turnstile,
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
return {
|
|
416
|
+
browser,
|
|
417
|
+
page,
|
|
418
|
+
};
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
//# sourceMappingURL=lib-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib-core.js","sourceRoot":"","sources":["../../../src/shared/lib-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/shared/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/shared/tools.ts"],"names":[],"mappings":"AAilBA,OAAO,EAAE,CAAA"}
|
package/dist/src/shared/tools.js
CHANGED
|
@@ -29,7 +29,8 @@ const TOOLS = [
|
|
|
29
29
|
},
|
|
30
30
|
turnstile: { type: 'boolean', default: true, description: 'Auto-solve Cloudflare Turnstile' },
|
|
31
31
|
enableBlocker: { type: 'boolean', default: true, description: 'Block ads and trackers' },
|
|
32
|
-
aiHealing: { type: 'boolean', default: true, description: 'Enable AI auto-healing for broken selectors' }
|
|
32
|
+
aiHealing: { type: 'boolean', default: true, description: 'Enable AI auto-healing for broken selectors' },
|
|
33
|
+
recordVideo: { type: 'boolean', default: false, description: 'Record continuous video of session' }
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
},
|
|
@@ -206,7 +207,6 @@ const TOOLS = [
|
|
|
206
207
|
description: 'Captcha type: turnstile/recaptcha/hcaptcha (JS-based), text/image (OCR-based), auto (detect)'
|
|
207
208
|
},
|
|
208
209
|
timeout: { type: 'number', default: 30000 },
|
|
209
|
-
aiMode: { type: 'boolean', default: true, description: 'Use AI vision for complex CAPTCHAs' },
|
|
210
210
|
captchaSelector: { type: 'string', description: 'CSS selector for captcha image (required for text/image type)' },
|
|
211
211
|
inputSelector: { type: 'string', description: 'CSS selector for input field to fill result' },
|
|
212
212
|
refreshSelector: { type: 'string', description: 'CSS selector for captcha refresh button' },
|
|
@@ -358,15 +358,15 @@ const TOOLS = [
|
|
|
358
358
|
{
|
|
359
359
|
name: 'network_recorder',
|
|
360
360
|
emoji: '📡',
|
|
361
|
-
description: 'Record all network activity with
|
|
362
|
-
descriptionHindi: 'नेटवर्क रिकॉर्डर —
|
|
361
|
+
description: 'Record all network activity with 11 actions: (1) start, (2) stop, (3) get, (4) clear, (5) get_media, (6) get_navigations, (7) get_api_calls, (8) get_intercepted_apis, (9) get_websockets, (10) get_graphql - extract GraphQL queries/mutations, (11) export_har - generate HAR 1.2 format JSON.',
|
|
362
|
+
descriptionHindi: 'नेटवर्क रिकॉर्डर — actions: start/stop/get/clear/get_media/get_navigations/get_api_calls/get_intercepted_apis/get_websockets/get_graphql/export_har।',
|
|
363
363
|
category: 'network',
|
|
364
364
|
requiresBrowser: true,
|
|
365
365
|
requiresPage: false,
|
|
366
366
|
inputSchema: {
|
|
367
367
|
type: 'object',
|
|
368
368
|
properties: {
|
|
369
|
-
action: { type: 'string', enum: ['start', 'stop', 'get', 'clear', 'get_media', 'get_navigations', 'get_api_calls', 'get_intercepted_apis', 'get_websockets'], default: 'get' },
|
|
369
|
+
action: { type: 'string', enum: ['start', 'stop', 'get', 'clear', 'get_media', 'get_navigations', 'get_api_calls', 'get_intercepted_apis', 'get_websockets', 'get_graphql', 'export_har'], default: 'get' },
|
|
370
370
|
filter: {
|
|
371
371
|
type: 'object',
|
|
372
372
|
properties: {
|
|
@@ -381,49 +381,6 @@ const TOOLS = [
|
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
},
|
|
384
|
-
// 19. Cookie Manager
|
|
385
|
-
{
|
|
386
|
-
name: 'cookie_manager',
|
|
387
|
-
emoji: '🍪',
|
|
388
|
-
description: 'Smart cookie management with AI session persistence',
|
|
389
|
-
descriptionHindi: 'कुकीज़ मैनेज करना (smart)',
|
|
390
|
-
category: 'browser',
|
|
391
|
-
requiresBrowser: true,
|
|
392
|
-
requiresPage: false,
|
|
393
|
-
inputSchema: {
|
|
394
|
-
type: 'object',
|
|
395
|
-
properties: {
|
|
396
|
-
action: { type: 'string', enum: ['get', 'set', 'delete', 'clear', 'export', 'import'], default: 'get' },
|
|
397
|
-
name: { type: 'string' },
|
|
398
|
-
value: { type: 'string' },
|
|
399
|
-
domain: { type: 'string' },
|
|
400
|
-
expires: { type: 'number' },
|
|
401
|
-
aiOptimize: { type: 'boolean', default: true, description: 'AI optimizes cookie persistence' }
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
},
|
|
405
|
-
// 20. File Downloader
|
|
406
|
-
{
|
|
407
|
-
name: 'file_downloader',
|
|
408
|
-
emoji: '⬇️',
|
|
409
|
-
description: 'Download files with resume, batch, and auto-decrypt support',
|
|
410
|
-
descriptionHindi: 'फाइल डाउनलोड करना (resume + batch)',
|
|
411
|
-
category: 'network',
|
|
412
|
-
requiresBrowser: true,
|
|
413
|
-
requiresPage: false,
|
|
414
|
-
inputSchema: {
|
|
415
|
-
type: 'object',
|
|
416
|
-
properties: {
|
|
417
|
-
url: { type: 'string' },
|
|
418
|
-
filename: { type: 'string' },
|
|
419
|
-
directory: { type: 'string', default: './downloads' },
|
|
420
|
-
resume: { type: 'boolean', default: true, description: 'Resume interrupted downloads' },
|
|
421
|
-
batch: { type: 'array', items: { type: 'string' }, description: 'Multiple URLs for batch download' },
|
|
422
|
-
autoDecode: { type: 'boolean', default: true, description: 'Auto-decode Base64/URL encoded URLs' },
|
|
423
|
-
decryptKey: { type: 'string', description: 'AES key for encrypted files' }
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
},
|
|
427
384
|
// 21. Media Extractor (MERGED: iframe_handler + stream_extractor + player_api_hook)
|
|
428
385
|
{
|
|
429
386
|
name: 'media_extractor',
|
|
@@ -486,6 +443,62 @@ const TOOLS = [
|
|
|
486
443
|
required: ['code']
|
|
487
444
|
}
|
|
488
445
|
},
|
|
446
|
+
// 23. Storage Inspector
|
|
447
|
+
{
|
|
448
|
+
name: 'storage_inspector',
|
|
449
|
+
emoji: '🗄️',
|
|
450
|
+
description: 'Inspect IndexedDB and Service Workers natively via JS.',
|
|
451
|
+
descriptionHindi: 'IndexedDB और Service Worker चेक करना।',
|
|
452
|
+
category: 'analysis',
|
|
453
|
+
requiresBrowser: true,
|
|
454
|
+
requiresPage: true,
|
|
455
|
+
inputSchema: {
|
|
456
|
+
type: 'object',
|
|
457
|
+
properties: {
|
|
458
|
+
action: { type: 'string', enum: ['indexeddb', 'service_workers'], default: 'indexeddb' }
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
// 24. Replay Request
|
|
463
|
+
{
|
|
464
|
+
name: 'replay_request',
|
|
465
|
+
emoji: '🔁',
|
|
466
|
+
description: 'Replay a captured API request directly in the browser context (bypasses CORS, attaches auth/cookies).',
|
|
467
|
+
descriptionHindi: 'कैप्चर की गई रिक्वेस्ट को फिर से ब्राउज़र में भेजना।',
|
|
468
|
+
category: 'network',
|
|
469
|
+
requiresBrowser: true,
|
|
470
|
+
requiresPage: true,
|
|
471
|
+
inputSchema: {
|
|
472
|
+
type: 'object',
|
|
473
|
+
properties: {
|
|
474
|
+
url: { type: 'string' },
|
|
475
|
+
method: { type: 'string', default: 'GET' },
|
|
476
|
+
headers: { type: 'object' },
|
|
477
|
+
body: { type: 'string' }
|
|
478
|
+
},
|
|
479
|
+
required: ['url']
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
// 24b. API Analyzer
|
|
483
|
+
{
|
|
484
|
+
name: 'api_analyzer',
|
|
485
|
+
emoji: '🧩',
|
|
486
|
+
description: 'Generate schemas, diff JSONs, and create SDK boilerplates (Python/TypeScript).',
|
|
487
|
+
descriptionHindi: 'API रिस्पांस से स्कीमा/SDK/Diff बनाना।',
|
|
488
|
+
category: 'analysis',
|
|
489
|
+
requiresBrowser: false,
|
|
490
|
+
requiresPage: false,
|
|
491
|
+
inputSchema: {
|
|
492
|
+
type: 'object',
|
|
493
|
+
properties: {
|
|
494
|
+
action: { type: 'string', enum: ['schema', 'diff', 'sdk'], default: 'schema' },
|
|
495
|
+
data: { type: 'string', description: 'JSON string for schema/diff, or URL for SDK' },
|
|
496
|
+
data2: { type: 'string', description: 'Second JSON string for diff action' },
|
|
497
|
+
lang: { type: 'string', enum: ['ts', 'python'], default: 'ts' }
|
|
498
|
+
},
|
|
499
|
+
required: ['action', 'data']
|
|
500
|
+
}
|
|
501
|
+
},
|
|
489
502
|
// 25. See Page (AI Vision — "eyes")
|
|
490
503
|
{
|
|
491
504
|
name: 'see_page',
|
|
@@ -505,7 +518,9 @@ const TOOLS = [
|
|
|
505
518
|
includeElements: { type: 'boolean', default: true, description: 'Include the visual map of interactive elements' },
|
|
506
519
|
includeDomText: { type: 'boolean', default: false, description: 'Include the full text content of the page (DOM reading)' },
|
|
507
520
|
maxElements: { type: 'number', default: 60, description: 'Max number of interactive elements to map' },
|
|
508
|
-
path: { type: 'string', description: 'Optional file path to also save the captured image' }
|
|
521
|
+
path: { type: 'string', description: 'Optional file path to also save the captured image' },
|
|
522
|
+
autoHover: { type: 'boolean', default: false, description: 'Hover over menus before taking screenshot to reveal dropdowns' },
|
|
523
|
+
watchMutations: { type: 'boolean', default: false, description: 'Check for DOM mutations (popups/alerts) since last view' }
|
|
509
524
|
}
|
|
510
525
|
}
|
|
511
526
|
}
|