kkoooqq / fakebrowser

🤖 Fake fingerprints to bypass anti-bot systems. Simulate mouse and keyboard operations to make behavior like a real person.
GNU Lesser General Public License v3.0
1.13k stars 211 forks source link

UnhandledPromiseRejectionWarning: Unable to get active page #31

Closed Jiw0cha closed 2 years ago

Jiw0cha commented 2 years ago

Hi.

Example not working

const {FakeBrowser} = require('fakebrowser');

!(async () => {
    const createBrowserAndGoto = async (userDataDir) => {
              const dd = require('./node_modules/fakebrowser/device-hub-demo/Windows.json');

                const builder = new FakeBrowser.Builder()

        .deviceDescriptor(dd)
            .vanillaLaunchOptions({

                headless: false,
                executablePath:'/usr/bin/google-chrome-stable',  
            })
            .userDataDir(userDataDir);

        const fakeBrowser = await builder.launch();
        var getPages = await fakeBrowser.getActivePage();
        await getPages.goto('https://example.org/');

        await sleep(20000);
        await getPages.close()

    };

    createBrowserAndGoto('./fakeBrowserUserData').then(e => e);
})();

Call fakeBrowser.getActivePage(); not return default page.

Example working only puppeteer;

'use strict';

const puppeteer = require('puppeteer');

function sleep(millis) {
    return new Promise(resolve => setTimeout(resolve, millis));
}

(async function main() {
  try {
    const browser = await puppeteer.launch({
        headless: false, 
        executablePath: '/usr/bin/google-chrome-stable',
        });
    const [page] = await browser.pages();

    await page.goto('https://example.org/');

    console.log(page.url());
    console.log(typeof page.url());

    await sleep(20000);

    await page.close()

  } catch (err) {
    console.error(err);
  }
})();

Call await browser.pages(); return default page;

kkoooqq commented 2 years ago

In my experience, don't use the default pages[0], there is no way to fully inject it, try newPage