What is CloakBrowser?

CloakBrowser is an open-source stealth Chromium browser with 2,431+ GitHub Stars and 312+ Forks. It is designed to pass all major bot detection systems while providing a real browser experience for web scraping and automation.

Unlike standard headless browsers that are easily detected, CloakBrowser uses advanced fingerprint rotation, proxy integration, and behavioral mimicry to appear as a genuine human user.

MetricValue
Stars2,431+
Forks312+
LanguageJavaScript
LicenseMIT
Today89 stars

GitHub: https://github.com/yifengyou/CloakBrowser

Why CloakBrowser is Different

1. Passes All Major Bot Detection

CloakBrowser successfully bypasses:

Detection SystemPass RateTechnique Used
Cloudflare98.5%Fingerprint rotation + TLS mimicry
DataDome96.2%Behavioral analysis evasion
PerimeterX94.8%Canvas/WebGL fingerprint spoofing
reCAPTCHA v397.1%Score manipulation
Akamai93.5%Request pattern randomization

2. Real Browser Fingerprint

 1// CloakBrowser generates realistic fingerprints
 2const profile = await cloak.generateProfile({
 3    os: 'Windows 11',
 4    browser: 'Chrome 120',
 5    resolution: '1920x1080',
 6    language: 'en-US',
 7    timezone: 'America/New_York'
 8});
 9
10// Each profile is unique and consistent
11console.log(profile.webgl.vendor);  // "Google Inc. (NVIDIA)"
12console.log(profile.webgl.renderer); // "ANGLE (NVIDIA, NVIDIA GeForce GTX 1660..."

3. Automatic Fingerprint Rotation

 1// Rotate fingerprints every session
 2const browser = await cloak.launch({
 3    rotateFingerprint: true,
 4    rotationInterval: 'per_session',  // per_session | per_request | per_minute
 5    proxy: {
 6        type: ' residential',
 7        country: 'US',
 8        city: 'New York'
 9    }
10});
11
12// Each new page gets a fresh identity
13const page1 = await browser.newPage();  // Profile A
14const page2 = await browser.newPage();  // Profile B (different!)

Core Features

Stealth Engine

 1const { CloakBrowser } = require('cloakbrowser');
 2
 3const browser = await CloakBrowser.launch({
 4    // Stealth options
 5    stealth: {
 6        // Hide automation flags
 7        hideWebDriver: true,
 8        hideChromeRuntime: true,
 9        hidePermissions: true,
10        
11        // Spoof navigator properties
12        spoofNavigator: {
13            hardwareConcurrency: 8,
14            deviceMemory: 8,
15            maxTouchPoints: 0
16        },
17        
18        // Canvas fingerprint protection
19        canvas: {
20            mode: 'noise',  // noise | block | off
21            seed: 'random'
22        },
23        
24        // WebGL spoofing
25        webgl: {
26            vendor: 'Google Inc. (NVIDIA)',
27            renderer: 'ANGLE (NVIDIA, NVIDIA GeForce GTX 1660...)'
28        }
29    }
30});

Proxy Integration

 1// Built-in proxy rotation
 2const browser = await CloakBrowser.launch({
 3    proxy: {
 4        provider: 'brightdata',  // brightdata | oxylabs | smartproxy | custom
 5        type: 'residential',     // residential | datacenter | mobile
 6        rotation: 'per_request',  // per_request | per_session | sticky
 7        
 8        // Geolocation targeting
 9        geo: {
10            country: 'US',
11            state: 'California',
12            city: 'Los Angeles'
13        }
14    }
15});

Web Scraping API

 1// High-level scraping API
 2const scraper = await browser.newScraper();
 3
 4// Extract data with automatic retry
 5const data = await scraper.extract({
 6    url: 'https://example.com/products',
 7    
 8    // Wait for dynamic content
 9    waitFor: '.product-list',
10    timeout: 30000,
11    
12    // Extract structured data
13    schema: {
14        products: {
15            selector: '.product-item',
16            multiple: true,
17            fields: {
18                name: '.product-title',
19                price: '.price',
20                image: '.product-img@src',
21                rating: '.rating@data-score'
22            }
23        },
24        pagination: {
25            next: '.next-page@href'
26        }
27    },
28    
29    // Auto-handle pagination
30    pagination: {
31        enabled: true,
32        maxPages: 10,
33        delay: 2000  // 2s between pages
34    }
35});
36
37console.log(`Scraped ${data.products.length} products`);

Bot Detection Evasion Techniques

1. Fingerprint Consistency

 1┌─────────────────────────────────────┐
 2│     Fingerprint Components           │
 3├─────────────────────────────────────┤
 4│  ✓ User-Agent                        │
 5│  ✓ Accept headers                    │
 6│  ✓ Screen resolution                 │
 7│  ✓ Color depth                       │
 8│  ✓ Timezone                          │
 9│  ✓ Language                          │
10│  ✓ Platform                          │
11│  ✓ WebGL vendor/renderer             │
12│  ✓ Canvas fingerprint                │
13│  ✓ Fonts list                        │
14│  ✓ Plugins                           │
15│  ✓ Touch support                     │
16└─────────────────────────────────────┘

2. Behavioral Mimicry

 1// Human-like mouse movements
 2await page.humanLikeMove({
 3    x: 100,
 4    y: 200,
 5    duration: 800,  // 800ms (human speed)
 6    curve: 'bezier'  // Natural bezier curve
 7});
 8
 9// Random delays between actions
10await page.randomDelay({
11    min: 500,
12    max: 3000,
13    distribution: 'normal'  // Normal distribution (bell curve)
14});
15
16// Scroll with variable speed
17await page.humanLikeScroll({
18    distance: 500,
19    speed: 'variable',  // Starts fast, slows down
20    pauseProbability: 0.3  // 30% chance to pause mid-scroll
21});

3. Request Pattern Randomization

 1// Randomize request timing
 2await cloak.randomizeRequests({
 3    // Add jitter to intervals
 4    jitter: {
 5        min: 0.8,   // 80% of base delay
 6        max: 1.5    // 150% of base delay
 7    },
 8    
 9    // Randomize header order
10    headerOrder: 'random',
11    
12    // Add random query params (cache busting)
13    cacheBust: true
14});

Quick Start

Installation

1# NPM
2npm install cloakbrowser
3
4# Yarn
5yarn add cloakbrowser
6
7# PNPM
8pnpm add cloakbrowser

Basic Usage

 1const { CloakBrowser } = require('cloakbrowser');
 2
 3(async () => {
 4    // Launch stealth browser
 5    const browser = await CloakBrowser.launch({
 6        headless: false,  // Use false for debugging
 7        stealth: true
 8    });
 9    
10    // Open page
11    const page = await browser.newPage();
12    
13    // Navigate with anti-detection
14    await page.goto('https://bot-detector.example.com', {
15        waitUntil: 'networkidle2',
16        timeout: 30000
17    });
18    
19    // Check detection score
20    const score = await page.evaluate(() => {
21        return window.botDetector?.getScore() || 'unknown';
22    });
23    
24    console.log(`Bot detection score: ${score}`);  // Should be low (< 0.3)
25    
26    // Take screenshot for verification
27    await page.screenshot({ path: 'stealth-test.png' });
28    
29    await browser.close();
30})();

Docker Deployment

 1FROM node:20-slim
 2
 3# Install dependencies
 4RUN apt-get update && apt-get install -y \
 5    chromium \
 6    fonts-liberation \
 7    libappindicator3-1 \
 8    libasound2 \
 9    libatk-bridge2.0-0 \
10    && rm -rf /var/lib/apt/lists/*
11
12WORKDIR /app
13COPY package*.json ./
14RUN npm install
15
16COPY . .
17
18# Run with CloakBrowser
19CMD ["node", "scraper.js"]

Use Cases

E-commerce Price Monitoring

 1// Monitor competitor prices
 2const monitor = await cloak.createMonitor({
 3    targets: [
 4        { url: 'https://amazon.com/dp/B08N5WRWNW', selector: '.a-price' },
 5        { url: 'https://walmart.com/ip/123456', selector: '[data-automation-id="product-price"]' }
 6    ],
 7    interval: '1h',
 8    proxy: { type: 'residential', rotation: true }
 9});
10
11monitor.on('priceChange', (data) => {
12    console.log(`Price changed: ${data.product} - ${data.oldPrice} -> ${data.newPrice}`);
13    // Send alert to Slack/Discord
14});

SEO Rank Tracking

 1// Track search rankings without detection
 2const tracker = await cloak.createRankTracker({
 3    keywords: ['AI trading bot', 'crypto automation'],
 4    locations: ['US', 'UK', 'CA'],
 5    searchEngines: ['google', 'bing'],
 6    proxy: { type: 'residential' }
 7});
 8
 9const results = await tracker.check();
10console.log(results);
11// [{ keyword: 'AI trading bot', rank: 3, url: '...' }, ...]

Social Media Automation

 1// Automate social media without bans
 2const social = await cloak.createSocialBot({
 3    platform: 'twitter',
 4    fingerprint: {
 5        device: 'mobile',
 6        os: 'iOS 17'
 7    }
 8});
 9
10// Post with human-like delays
11await social.post({
12    content: 'Check out this new AI tool!',
13    media: ['./image.png'],
14    delay: { min: 5000, max: 15000 }  // Random 5-15s delay
15});

Performance Benchmarks

TestStandard PuppeteerCloakBrowserImprovement
Cloudflare Pass Rate12%98.5%+721%
reCAPTCHA v3 Score0.9 (bot)0.1 (human)-89%
DataDome Detection94%3.8%-96%
Average Detection Time2.3s8.7s+278%
Session Duration1.2min45min+3650%

Tests conducted on 1000 sessions across 50 websites

Advanced Configuration

Custom Fingerprint Profiles

 1// Create custom browser profile
 2const profile = await cloak.createProfile({
 3    // Hardware
 4    cpu: {
 5        cores: 8,
 6        architecture: 'x86_64'
 7    },
 8    memory: 16,  // GB
 9    
10    // Display
11    screen: {
12        width: 1920,
13        height: 1080,
14        colorDepth: 24,
15        pixelRatio: 1
16    },
17    
18    // Software
19    os: {
20        name: 'Windows',
21        version: '11',
22        platform: 'Win32'
23    },
24    browser: {
25        name: 'Chrome',
26        version: '120.0.0.0',
27        language: 'en-US'
28    }
29});
30
31// Save for reuse
32await profile.save('my-windows-profile');

Plugin System

 1// Custom plugins for specific sites
 2const browser = await CloakBrowser.launch({
 3    plugins: [
 4        // Amazon-specific evasion
 5        require('cloakbrowser/plugins/amazon'),
 6        
 7        // Google-specific evasion
 8        require('cloakbrowser/plugins/google'),
 9        
10        // Custom plugin
11        {
12            name: 'my-plugin',
13            onBeforeRequest: (request) => {
14                // Modify requests
15                if (request.url.includes('tracking')) {
16                    request.abort();
17                }
18            }
19        }
20    ]
21});

Community & Resources


Disclaimer: CloakBrowser is for legitimate automation and testing purposes only. Always comply with website Terms of Service and applicable laws. The authors do not endorse or support unauthorized scraping or automated abuse.