Puppeteer stealth

Enabling Puppeteer Stealth is a configuration that makes the browser behave more «human-like,» avoiding detection as a bot by websites. This is useful for tasks like web automation or scraping without triggering anti-bot mechanisms. Instead of just launching a browser, you can enable the Stealth option in Puppeteer to improve the discretion of actions.

Enabling Puppeteer Stealth in the HTTP API

To enable Puppeteer Stealth, you pass a boolean value in the configuration sent to the HTTP API. This allows the browser to apply specific adjustments that mimic human behavior during execution, such as modifying network headers and changing the browser’s navigator properties, among others.

Example in C# using CloudBrowser’s HTTP API

Here’s a C# example that enables Puppeteer Stealth when launching a remote browser:

using System;
using System.Net.Http;
using System.Threading.Tasks;
using PuppeteerSharp;

public class Program
{
    public static async Task Main(string[] args)
    {
        var serverUrl = "https://production.cloudbrowser.ai/api/v1/Browser/OpenAdvanced";
        var apiToken = "your-api-token"; // Replace with your actual API token

        var requestBody = new
        {
            Stealth = true // Pass Stealth as true in the request body
        };

        var jsonContent = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json");

        // Create an HttpClient and include the API token in the request headers
        var httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiToken);

        // Request the WebSocket endpoint of the remote browser
        var response = await httpClient.PostAsync(serverUrl, jsonContent);
        
        // Get address value
        var responseContent = await response.Content.ReadAsStringAsync();
        dynamic jsonResponse = JsonConvert.DeserializeObject(responseContent);
        var browserWSEndpoint = jsonResponse.address;
        
        // Connect to the remote browser
        var browser = await Puppeteer.ConnectAsync(new ConnectOptions
        {
            BrowserWSEndpoint = browserWSEndpoint,
        });

        // Create a new page
        var page = await browser.NewPageAsync();

        // Navigate to a URL to verify the IP
        await page.GoToAsync("https://ifconfig.me");

        // Close the browser
        await browser.CloseAsync();
    }
}

Last updated