Reputation: 11
this code works as it should if you run it through node index.js, but after compilation pkg stops working.
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const findChrome = require('chrome-finder');
const moment = require('moment-timezone');
const UserAgent = require('user-agents');
const stealth = StealthPlugin();
puppeteer.use(stealth);
initialization();
async function initialization() {
const chromePath = findChrome();
const browser = await puppeteer.launch({
executablePath: chromePath,
args: [
'--no-sandbox',
'--disable-infobars',
'--disable-setuid-sandbox',
'--disable-extensions',
'--disable-dev-shm-usage',
'--disable-gpu',
'--lang=en',
'--window-position=0,0',
'--test-type',
'--disable-features=site-per-process', // ProcessPerSiteUpToMainFrameThreshold,
'--ignore-certificate-errors',
// '--auto-open-devtools-for-tabs',
],
headless: false,
ignoreDefaultArgs: ['--enable-automation', '--mute-audio'],
ignoreHTTPSErrors: true,
});
browser.on('targetcreated', async target => {
try {
if (target.type() === 'page') {
const newPage = await target.page();
// const url = newPage.url();
newPage &&
newPage.on('framenavigated', async frame => {
try {
const newURL = frame?.url();
if (newURL && newURL.includes('https://www.example.com')) {
const allTimezones = moment.tz.names();
const randomTimezoneIndex = Math.floor(
Math.random() * allTimezones.length
);
const randomTimezone = allTimezones[randomTimezoneIndex];
const ua = new UserAgent({});
const { userAgent, viewportWidth, viewportHeight, platform } =
ua.data;
await newPage.setUserAgent(userAgent);
await newPage.setViewport({
width: viewportWidth,
height: viewportHeight,
});
await newPage.emulateTimezone(randomTimezone);
await newPage.setBypassCSP(true);
await newPage.evaluateOnNewDocument(() => {
console.log('window', window);
Object.defineProperty(window, 'localStorage', {
value: {
getItem: () => null, // Имитация пустого localStorage
setItem: () => null,
removeItem: () => null,
clear: () => null,
},
writable: false, // Запрет на изменение localStorage
configurable: false, // Запрет на удаление localStorage
enumerable: true,
});
});
await newPage.goto('https://www.google.com');
}
} catch (error) {
console.log('framenavigated err', error.message);
}
});
}
} catch (error) {
console.log('targetcreated err', error.message);
}
});
const page = await browser.newPage();
await page.goto('https://www.example.com');
}
manifest script
"scripts": {
"pkg": "pkg ./src/index.js -c ./pkgConfig.json",
},
pkgConfig.json
{
"pkg": {
"assets": [
"node_modules/chrome-finder/**/*",
"node_modules/moment-timezone/**/*",
"node_modules/puppeteer/**/*",
"node_modules/puppeteer-core/**/*",
"node_modules/puppeteer-extra/**/*",
"node_modules/puppeteer-extra-plugin-stealth/**/*",
"node_modules/user-agents/**/*"
],
"outputPath": "dist/build"
}
}
Actually, when running the code through node index.js, localstrge is overwritten and access to local storage for Google is blocked, but after copying there is no
?????????????????
Upvotes: 1
Views: 84