Как изменить navigator в iframe у которого другой домен? puppeteer
Вопрос про nodejs.
У меня есть сайт, но мне нужно изменить navigator из iframe, но iframe из другого домена. Если я глобально поменяю navigator page.evaluateOnNewDocument(), то на iframe это не применить.
const iframeHandle = await this.page.waitForSelector(".p-4.backdrop-blur-sm > div > div > div iframe"); // Замените на ваш селектор
const frame = await iframeHandle.contentFrame();
//
await frame.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'appCodeName', {
get: () => "Mozilla",
});
//
Object.defineProperty(navigator, 'appVersion', {
get: () => "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
});
//
Object.defineProperty(navigator, 'cookieEnabled', {
get: () => true,
});
//
Object.defineProperty(navigator, 'deprecatedRunAdAuctionEnforcesKAnonymity', {
get: () => false,
});
//
Object.defineProperty(navigator, 'deviceMemory', {
get: () => 8,
});
//
Object.defineProperty(navigator, 'language', {
get: () => "ru-RU",
});
//
Object.defineProperty(navigator, 'languages', {
get: () => ['ru-RU', 'ru', 'en-US', 'en'],
});
//
Object.defineProperty(navigator, 'platform', {
get: () => "Win32",
});
//
Object.defineProperty(navigator, 'onLine', {
get: () => true,
});
//
Object.defineProperty(navigator, 'pdfViewerEnabled', {
get: () => true,
});
//
Object.defineProperty(navigator, 'product', {
get: () => "Gecko",
});
//
Object.defineProperty(navigator, 'productSub', {
get: () => "20030107",
});
//
Object.defineProperty(navigator, 'userActivation', {
get: () => ({hasBeenActive: true, isActive: true}),
});
//
Object.defineProperty(navigator, 'userAgent', {
//get: () => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
get: () => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36",
});
//
Object.defineProperty(navigator, 'userAgentData', {
get: () => ({
brands:[
{
"brand": "Google Chrome",
"version": "137"
},
{
"brand": "Chromium",
"version": "137"
},
{
"brand": "Not/A)Brand",
"version": "24"
}
],
mobile: false,
platform: "Windows",
//platform: "Linux"
}),
});
//
Object.defineProperty(navigator, 'vendor', {
get: () => "Google Inc.",
});
//
Object.defineProperty(navigator, 'vendorSub', {
get: () => "",
});
});
console.log('Появилось')
если я так использую выдает ошибку
await frame.evaluateOnNewDocument(() => { ^ TypeError:
frame.evaluateOnNewDocument is not a function at Timeout._onTimeout
(C:\save\mycontent\Проекты\random_browser\start.js:156:25)