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:
usingSystem;usingSystem.Net.Http;usingSystem.Threading.Tasks;usingPuppeteerSharp;publicclassProgram{publicstaticasyncTaskMain(string[] args) {var serverUrl ="https://production.cloudbrowser.ai/api/v1/Browser/OpenAdvanced";var apiToken ="your-api-token"; // Replace with your actual API tokenvar requestBody =new { Stealth =true// Pass Stealth as true in the request body };var jsonContent =newStringContent(JsonConvert.SerializeObject(requestBody),Encoding.UTF8,"application/json"); // Create an HttpClient and include the API token in the request headersvar httpClient =newHttpClient();httpClient.DefaultRequestHeaders.Authorization=newAuthenticationHeaderValue("Bearer", apiToken); // Request the WebSocket endpoint of the remote browservar response =awaithttpClient.PostAsync(serverUrl, jsonContent); // Get address valuevar responseContent =awaitresponse.Content.ReadAsStringAsync();dynamic jsonResponse =JsonConvert.DeserializeObject(responseContent);var browserWSEndpoint =jsonResponse.address; // Connect to the remote browservar browser =awaitPuppeteer.ConnectAsync(newConnectOptions { BrowserWSEndpoint = browserWSEndpoint, }); // Create a new pagevar page =awaitbrowser.NewPageAsync(); // Navigate to a URL to verify the IPawaitpage.GoToAsync("https://ifconfig.me"); // Close the browserawaitbrowser.CloseAsync(); }}