Overview

Stealth mode provides developers with a robust suite of tools aimed at facilitating web automation while minimizing the chances of detection by sophisticated anti-bot technologies.

By employing proxies, residential IPs, and fingerprinting techniques, developers can simulate authentic user interactions across multiple sessions and IPs.

This mode is useful for tasks that involve data scraping, automated testing, and content aggregation in environments with strict bot detection mechanisms.

The integrated captcha-solving feature ensures navigation when faced with security challenges. Stealth mode supports a secure and efficient way to manage and execute automated tasks on a wide range of websites.

Browserbase’s custom-built Chromium Browser comes with a set of features enabling you to navigate in Stealth mode.

Features

Proxies & Residential IPs

Browserbase offers flexible proxy configuration options, allowing you to use our built-in proxies, bring your own, or combine both. Proxies are configured when creating a session through the API.

Proxy usage measures the total data transferred when routing internet traffic through an intermediary server. It includes all incoming and outgoing data - from webpage content and downloads to the technical overhead of headers, encryption, and authentication.

When you load a website through a proxy, the data must flow to the proxy server first before reaching its final destination, with every request and response being counted towards your total bandwidth usage.

Proxy Configuration Options

Enable Browserbase proxies easily with the default configuration:

curl -X POST 'https://api.browserbase.com/v1/sessions' \
-H "Content-Type: application/json" \
-H "x-bb-api-key: $BROWSERBASE_API_KEY" \
-d '{
  "projectId": "'$BROWSERBASE_PROJECT_ID'",
  "proxies": true
}'

Alternatively you can list it as the only rule in the proxies array:

curl -X POST 'https://api.browserbase.com/v1/sessions' \
-H "Content-Type: application/json" \
-H "x-bb-api-key: $BROWSERBASE_API_KEY" \
-d '{
  "projectId": "'$BROWSERBASE_PROJECT_ID'",
  "proxies": [
    { "type": "browserbase" }
  ]
}'

To use these proxy configurations, you need to create a session with the desired proxy settings through the Sessions API, and then connect to that session. Here some examples:

Best Practices

When working with proxies, it’s important to account for potential latency introduced by proxy connections. To ensure your automations don’t fail due to premature timeouts, we recommend increasing default page navigation timeouts.

A good starting point is 60 seconds or more, depending on your specific use case. Here’s an example of how to set an extended timeout:

Playwright
// Increase timeout to 60 seconds (60000 milliseconds)
await page.goto("https://example.com", { timeout: 60000 });

This extended timeout gives the proxy sufficient time to establish a connection with the target server and complete the page load, reducing the likelihood of timeout errors in your automation scripts.

Limitations

Some high-risk categories are restricted by our proxy vendors and cannot be proxied which includes:

  • All Apple domains, including iTunes and App stores
  • Entertainment (e.g., Netflix, Playstation)
  • Banking and other financial institutions
  • Some Google domains
  • Streaming
  • Ticketing
  • LinkedIn
  • Mailing

Fingerprinting

The fingerprint mechanism handles the viewport, user agents, and headers and can be configured when creating a new Session through the API with the fingerprint field:

These include changing the HTTP version, browser type, device type, locale, operating system, screen viewport size, and other fingerprinting details.

For a complete list of available options when creating a session, please refer to our API documentation on creating a session.

When setting operatingSystems to ios or android, ensure the devices array includes "mobile".

When setting operatingSystems to linux, macos, or windows, ensure the devices array includes "desktop".

Available options for operatingSystems: android, ios, linux, macos, windows

Captcha Solving

Captchas get automatically detected and solved. Proxies must be enabled to turn on captcha solving.

You can detect if a captcha is being solved by listening to the browserbase-solving-started and browserbase-solving-finished events in the console.log of the page.

const google = await page.goto("https://www.google.com/recaptcha/api2/demo");

page.on("console", (msg) => {
  if (msg.text() == "browserbase-solving-started") {
    console.log("Captcha Solving In Progress");
  } else if (msg.text() == "browserbase-solving-finished") {
    console.log("Captcha Solving Completed");
  }
});

Captcha solving can take up to 30 seconds. Please note, this feature is currently in beta; if you have any feedback, please reach out.

If you’d like to disable captcha solving, you can set solveCaptchas to false in the browserSettings when creating a session.

curl -X POST 'https://api.browserbase.com/v1/sessions' \
-H "Content-Type: application/json" \
-H "x-bb-api-key: $BROWSERBASE_API_KEY" \
-d '{
  "projectId": "'$BROWSERBASE_PROJECT_ID'",
  "browserSettings": {
    "solveCaptchas": false
  }
};