Puppeteer-Extra Tutorial with Examples

In this Puppeteer-Extra tutorial, I have covered how to use Puppeteer-Extra plugins and implement a custom plugin.

Puppeteer-Extra Tutorial with Examples

What is Puppeteer-Extra?

Puppeteer-Extra is an extension of the popular Node library Puppeteer, which provides additional functionality through plugins to enhance its capabilities. It allows developers to use and create plugins that can modify the behavior of Puppeteer, often to bypass certain browser detection methods, add extra features, or simplify complex tasks. This makes Puppeteer more versatile and powerful for tasks such as web scraping, automating form submissions, and more.

Installation Steps

Installing Puppeteer-Extra is straightforward. Here are the steps to get it up and running in your Node.js project:

  1. Make sure you have Node.js and npm installed on your machine.
  2. Open a terminal or command prompt.
  3. Run the following command to install Puppeteer-Extra and Puppeteer:
npm install puppeteer-extra puppeteer

Troubleshooting Tip: If you encounter any installation issues, ensure that your Node.js and npm versions are up-to-date.

List of Puppeteer-Extra Plugins

Puppeteer-Extra comes with a variety of plugins that can be included based on your needs. Some popular plugins include:

How to Enable Stealth Plugin

To use Stealth plugin, you must first install it and then add it to your Puppeteer-Extra instance. Here is an example of how to enable the Stealth plugin:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

// Add the Stealth plugin
puppeteer.use(StealthPlugin());

// Function to launch Puppeteer with the plugin
async function launchPuppeteerWithPlugin() {
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();
    await page.goto('https://example.com');
    // Perform actions on the page
    await browser.close();
}

// Call the function
launchPuppeteerWithPlugin();

Output:

Browser launched with Stealth plugin enabled and navigated to example.com

Troubleshooting Tip: If your plugin is not working as expected, check if it conflicts with any other installed plugins or browser settings.

 

Implementing a Custom Plugin

Creating a custom plugin for Puppeteer-Extra allows you to add bespoke functionality to suit your specific needs. Here’s a simple example of a custom plugin that sets the timezone:

const puppeteer = require('puppeteer-extra');
const { PuppeteerExtraPlugin } = require('puppeteer-extra-plugin');

// Create a custom plugin
class SetTimezonePlugin extends PuppeteerExtraPlugin {
    constructor(opts = { timezone: 'Europe/London' }) {
        super(opts);
    }

    get name() {
        return 'set-timezone';
    }

    async onPageCreated(page) {
        await page.emulateTimezone(this.opts.timezone);
    }
}

// Add the custom plugin to puppeteer-extra
const setTimezonePlugin = new SetTimezonePlugin({ timezone: 'America/New_York' });
puppeteer.use(setTimezonePlugin);

// Function to launch Puppeteer with the custom plugin
async function launchPuppeteerWithTimezone() {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://example.com');
    // Your page operations here
    await browser.close();
}

// Call the function
launchPuppeteerWithTimezone();

Output:

Browser launched with custom SetTimezone plugin enabled and navigated to example.com with the timezone set to America/New_York.

Troubleshooting Tip: Always test your custom plugin to ensure it does not interfere with Puppeteer’s internal operations or other plugins.

Summary

In this Puppeteer-Extra tutorial, we’ve covered the basics of using Puppeteer-Extra, from installation to the implementation of plugins, including how to add a custom plugin to extend its functionalities. Puppeteer-Extra is a powerful tool that can make your browser automation workflows more efficient and difficult to detect, thanks to its extensible plugin architecture.