A simple puppeteer
wrapper to enable useful plugins with ease
Requires node v10 and higher
npm install puppeteer-pro
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();
})();
- There can be multiple request interception handlers for the same request. In such cases, the resulting response will prioritize
respond
, followed byabort
, followed bycontinue
. 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.
- If amongst 5 handlers, respond is called 1 time, abort is called 2 times and continue is called 2 times, the result will be
- Anonymize the user-agent across all pages
- Multiple techniques to combat headless browser detection
- Block any resource type from loading
- Can be used to speed up loading websites by blocking style sheets and images
- Block dialogs from popping up and stopping execution
- Save and load cookies across sessions
- Supports multiple profiles and switching between profiles
- Save and load local storage across sessions
- Supports multiple profiles and switching between profiles
- Solve Google's reCAPTCHA v2
- Requires a FREE wit.ai access token