Как изменить 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) 

Ответы (0 шт):