Skip to content

scrapingforge/creepjs-bypass-tests

Repository files navigation

CreepJS Browser Fingerprinting Bypass Testing

This project tests various browser automation frameworks against CreepJS fingerprinting detection. It includes Docker configurations for Puppeteer, Playwright, Selenium, Golang chromedp, and Camoufox.

Project Structure

creepjs/
├── docker-compose.yml
├── Dockerfile.puppeteer
├── Dockerfile.playwright
├── Dockerfile.selenium
├── Dockerfile.golang
├── Dockerfile.camoufox
├── package.json
├── requirements.txt
├── requirements-camoufox.txt
├── go.mod
├── go.sum
├── src/
│   ├── puppeteer-scraper.js
│   ├── playwright-scraper.js
│   ├── selenium-scraper.py
│   ├── golang-scraper.go
│   └── camoufox-scraper.py
├── data/                    # Screenshots will be saved here
└── README.md

Prerequisites

  • Docker
  • Docker Compose V2 (comes with Docker Desktop)

Quick Start

Run All Tests

To test all frameworks at once:

# Run each framework individually
docker compose up puppeteer-scraper
docker compose up playwright-scraper
docker compose up selenium-scraper
docker compose up golang-chromedp-scraper
docker compose up camoufox-scraper

Run Individual Framework Tests

Puppeteer:

docker compose up puppeteer-scraper

Playwright:

docker compose up playwright-scraper

Selenium:

docker compose up selenium-scraper

Golang chromedp:

docker compose up golang-chromedp-scraper

Camoufox:

docker compose up camoufox-scraper

Results

After running tests, screenshots will be saved in the ./data/ directory:

  • puppeteer-stealth-headless.png - Puppeteer with stealth (headless mode)
  • puppeteer-stealth-xvfb.png - Puppeteer with stealth + Xvfb
  • playwright-stealth-headless.png - Playwright with stealth (headless mode)
  • playwright-stealth-xvfb.png - Playwright with stealth + Xvfb
  • selenium-stealth-headless.png - Selenium with UC (headless mode)
  • selenium-stealth-xvfb.png - Selenium with UC + Xvfb
  • golang-stealth-headless.png - Golang chromedp (headless mode)
  • golang-stealth-xvfb.png - Golang chromedp + Xvfb
  • camoufox-basic.png - Basic Firefox (no stealth)
  • camoufox-stealth.png - Camoufox with all features + Xvfb

Expected Stealth Scores

Framework Details

Puppeteer

  • Language: Node.js
  • Stealth Plugin: puppeteer-extra-plugin-stealth
  • Best Use Case: Node.js projects, large ecosystem

Playwright

  • Language: Node.js
  • Stealth Plugin: puppeteer-extra-plugin-stealth (via playwright-extra)
  • Best Use Case: Multi-browser support, modern API

Selenium

  • Language: Python
  • Stealth Library: undetected-chromedriver
  • Best Use Case: Python projects, mature ecosystem

Golang chromedp

  • Language: Golang
  • Stealth Approach: Chrome flags
  • Best Use Case: High-performance, production-scale scraping

Camoufox

  • Language: Python
  • Stealth Approach: Firefox with built-in anti-fingerprinting
  • Best Use Case: Maximum stealth, privacy-focused scraping

Troubleshooting

Build Issues

If you encounter build errors, try rebuilding without cache:

docker compose build --no-cache puppeteer-scraper

Permission Issues

If you have permission issues with the data directory:

chmod -R 755 ./data

Chrome/Chromium Not Found

The Dockerfiles handle Chrome/Chromium installation. If you see errors, ensure Docker has enough resources allocated (at least 2GB RAM).

Customization

Modify Wait Time

Edit the source files and change the sleep/timeout duration:

// JavaScript (Puppeteer/Playwright)
await page.waitForTimeout(10000); // Change 10000 to desired milliseconds
# Python (Selenium/Camoufox)
time.sleep(10)  # Change 10 to desired seconds
// Golang
chromedp.Sleep(10*time.Second), // Change 10 to desired seconds

Change Target URL

Modify the target URL in each scraper file:

await page.goto('https://your-target-url.com/', { waitUntil: 'networkidle2' });

Clean Up

To remove all containers and images:

docker compose down
docker system prune -a

To clean up only the data directory:

rm -rf ./data/*

Contributing

Feel free to submit issues or pull requests to improve the testing setup.

License

MIT

Related Resources

Blog Post

For a detailed explanation of these tests and results, read the full blog post: How to Bypass CreepJS Browser Fingerprinting in 2025

About

Creepjs bypass testing with playwright, puppeteer, golang chromedp, selenium, camoufox

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published