Complete example of using Puppeteer with Chromax browser for automated testing and scraping with native fingerprint protection.
- Install Chromax - Download ChromaxSetup.exe from Downloads
- Install Node.js - Version 14.0.0 or higher
cd examples/chromax-standalone/nodejs-puppeteer-example
npm installnode index.jsThe script will:
- Launch Chromax with fingerprint protection
- Test fingerprint settings
- Open https://browserleaks.com/canvas
- Keep browser open for manual testing
If Chromax is not installed at the default location, set the environment variable:
# Windows (Command Prompt)
set CHROMIUM_PATH=C:\custom\path\to\chrome.exe
node index.js
# Windows (PowerShell)
$env:CHROMIUM_PATH="C:\custom\path\to\chrome.exe"
node index.js
# Linux/Mac
export CHROMIUM_PATH=/custom/path/to/chrome
node index.jsEdit index.js to customize fingerprint settings:
const config = {
chromiumPath: '...', // Auto-detected
fingerprint: {
userAgent: 'Mozilla/5.0...',
platform: 'Win32',
screenResolution: '1920x1080',
timezone: 'America/New_York',
webgl: {
mode: 'mask',
vendor: 'Intel Inc.',
renderer: 'Intel(R) Iris(R) Xe Graphics'
},
canvas: {
mode: 'noise',
seed: 'my-canvas-seed-456'
}
}
};proxy: {
enabled: true,
server: 'http://proxy.example.com:8080'
}Use the proxy bridge for authenticated proxies:
- Start proxy bridge (in separate terminal):
cd ../nodejs-proxy-bridge
node proxy-bridge-cli.js --upstream socks5://user:pass@host:1080 --port 9999- Configure script to use bridge:
proxy: {
enabled: true,
server: 'http://127.0.0.1:9999'
}- Launches Chromax with fingerprint protection
- Tests fingerprint by checking:
- Navigator properties (userAgent, platform, etc.)
- WebGL vendor/renderer
- Canvas fingerprint
- Native code verification
- Opens test site at browserleaks.com/canvas
- Stays open for manual testing
After the browser launches, test at:
- https://browserleaks.com/canvas
- https://browserleaks.com/webgl
- https://whoer.net
- https://pixelscan.net
- Use unique seeds for canvas/webgl for different profiles
- Match User-Agent with platform and WebGL vendor
- Test thoroughly before production use
- Use puppeteer-core (not puppeteer) to avoid downloading regular Chrome
headless: trueconst page1 = await browser.newPage();
const page2 = await browser.newPage();
await page1.goto('https://example.com');
await page2.goto('https://another-site.com');await page.screenshot({ path: 'screenshot.png' });const title = await page.title();
const content = await page.$eval('h1', el => el.textContent);- Chromax Documentation: docs/chromax/
- Puppeteer Docs: https://pptr.dev/
- Issues: Open an issue on GitHub
Proprietary License - Free for personal use