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 🙏

© 2026 – Pkg Stats / Ryan Hefner

antibotbrowser

v4.0.1

Published

Opening Chromium opens a real browser without bot validations in automated systems like Puppeteer. To avoid problems in places like Cloudflare

Downloads

269

Readme

This library is designed to behave like a real browser, allowing you to bypass Cloudflare Challenges and other bot verification systems that often block traditional automated tools.

This is for educational purposes only. Bypassing systems like bot verification may be illegal. User responsibility lies with the user.

Note: This package is compatible with Puppeteer, Playwright, and any other automation framework that supports the Chrome DevTools Protocol (CDP).

Usage

1 - First let's start by installing the module

npm install antibotbrowser

2 - Let's include our module in our project

const antibotbrowser = require("antibotbrowser");

3 - And let's run our browser

  // Default use (Port: 9222)
  var antibrowser = await antibotbrowser.startbrowser(9222);

  // Advanced use with options
  var antibrowser = await antibotbrowser.startbrowser({
    port: 9222, // Default: 9222 (Optional)
    userdata: true, // true, false or "custom_profile_name" (Optional)
    headless: true, // headless mode (Default: false) (Optional)
    nosandbox: true // no-sandbox mode (Default: false) (Optional)
  });

If userdata is true, the browser will use a default persistent profile to save your session (cookies, history, etc.). You can also pass a string like "my_profile" to create and use a specific persistent folder for the profile. If false, it will use a temporary profile that is deleted when the browser is closed.

END - Connect the browser to puppeteer with websocket

const antibotbrowser = require("antibotbrowser");
const puppeteer = require('puppeteer');

(async () => { 

   const antibrowser = await antibotbrowser.startbrowser({
       port: 9222,
       headless: false
   });  

    const browser = await puppeteer.connect({browserWSEndpoint: antibrowser.websokcet});

   // Normal use from now on
    const page = await browser.newPage();    

    await page.setViewport({width:0, height:0});

    await page.goto("https://www.nokersoft.com")

})();

Troubleshooting and General Information

  • Linux / Server Usage: If you are running on a Linux server without a GUI (e.g., Ubuntu Server), you must use the headless: true option.
  • Root User: If you are running the script as a root user, Chromium may fail to start due to security restrictions. In this case, use the nosandbox: true option.
  • Port Conflicts: If the default port 9222 is already in use by another application, you can specify a different port using the port option (e.g., 9333).
  • Dependencies: Ensure that your system has the necessary dependencies installed for Chromium to run (especially on minimal Linux distributions).

Usage with custom flags

If you want to add your own Chromium flags, you can use the flags option.

  var antibrowser = await antibotbrowser.startbrowser({
    port: 9222,
    flags: ["--incognito", "--disable-notifications"]
  });

Commonly used flags:

  • "--incognito": Opens the browser in incognito mode (does not save cookies or history).
  • "--disable-notifications": Disables web notifications.
  • "--mute-audio": Mutes all audio coming from the browser.
  • "--window-size=1920,1080": Starts the browser with a specific window resolution.
  • "--disable-gpu": Disables hardware acceleration (useful for server-side or headless environments).

Example uses

const antibotbrowser = require("antibotbrowser");
const puppeteer = require('puppeteer');
(async () => { 

   const antibrowser = await antibotbrowser.startbrowser(9222);  // We start the browser with settings Port: 9222

    const browser = await puppeteer.connect({browserWSEndpoint: antibrowser.websokcet}); // We connect the launched browser to puppeteer.

   // Normal use from now on
    const page = await browser.newPage();    

    await page.setViewport({width:0, height:0});

    await page.goto("https://www.nokersoft.com")

})();

Usage with Playwright

const { chromium } = require('playwright');
const antibotbrowser = require("antibotbrowser");

(async () => {
   const antibrowser = await antibotbrowser.startbrowser(9222);
   
   // Connect Playwright to the launched browser via CDP
   const browser = await chromium.connectOverCDP(`http://localhost:9222`);
   
   const context = browser.contexts()[0];
   const page = context.pages()[0] || await context.newPage();
   
   await page.goto("https://www.nokersoft.com");
   
   console.log("Page title:", await page.title());
})();

Important Notes

Regarding imitation and fake packages: I've seen a few people publishing exact copies of our npm package under different names. Using these packages could pose security risks. Always use the original package developed by Nokersoft. (If you search for "antibotbrowser" in npm, you might find fake npm packages. Be careful and report them.)