npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

puppeteer-pro

v1.8.16

Published

A simple puppeteer wrapper to enable useful plugins with ease

Downloads

483

Readme

Puppeteer-Pro

A simple puppeteer wrapper to enable useful plugins with ease

Installation

Requires node v10 and higher

npm install puppeteer-pro

Quickstart

Puppeteer-Pro can do all the same things as puppeteer, just now with plugins!

// Puppeteer-Pro is a drop-in replacement for puppeteer
const PuppeteerPro = require('puppeteer-pro');

// Enable the 'avoidDetection' plugin to prevent headless detection
PuppeteerPro.avoidDetection();

// Enable the 'solveRecaptchas' plugin to solve Google's recaptchas (remember to provide a wit.api API access token)
const solver = PuppeteerPro.solveRecaptchas('WIT_AI_ACCESS_TOKEN');

(async () => {
  const browser = await PuppeteerPro.launch();
  const page = await browser.newPage();
  
  console.log('Testing the 🐱‍👤 avoidDetection 🐱‍👤 plugin..')
  await page.goto('https://arh.antoinevastel.com/bots/areyouheadless');
  await page.screenshot({ path: 'are-you-headless.png' });
  
  console.log('Testing the recaptcha solver..')
  await page.goto('https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php');
  await solver.waitForCaptcha(page); // Captcha script is deferred, so will load after page.goto completes
  await solver.solveRecaptcha(page);
  await page.screenshot({ path: 'is-recaptcha-solved.png' });

  await browser.close();
})();

Passive Improvements

  • There can be multiple request interception handlers for the same request. In such cases, the resulting response will prioritize respond, followed by abort, followed by continue. For example:
    • If amongst 5 handlers, respond is called 1 time, abort is called 2 times and continue is called 2 times, the result will be respond. This will occur after the first respond is called and not when all handlers are finished.
    • If amongst 5 handlers, abort is called 1 time and continue is called 4 times, the result will be abort. This will occur after all handlers are finished.
    • If amongst 5 handlers, all handlers call continue, the result will be continue. This will occur after all handlers are finished.

Optional Built-in Plugins

Anonymize User Agent

  • Anonymize the user-agent across all pages

Avoid Detection

  • Multiple techniques to combat headless browser detection

Block Resources

  • Block any resource type from loading
  • Can be used to speed up loading websites by blocking style sheets and images

Disable Dialogs

  • Block dialogs from popping up and stopping execution

Manage Cookies

  • Save and load cookies across sessions
  • Supports multiple profiles and switching between profiles

Manage Local Storage

  • Save and load local storage across sessions
  • Supports multiple profiles and switching between profiles

Solve Recaptcha

  • Solve Google's reCAPTCHA v2
  • Requires a FREE wit.ai access token