Stealth Mode, really?
As a matter of fact, browser fingerprinting is a complicated
research topic due to the complex nature of browsers. Whether we can have complete and true evasion or not is still an open question. As long as new features are delivered with new browser versions, it's likely to have new fingerprints everyday.
Browser architecture, from software perspective, is composed of different layers. While certain fingerprints can be avoided with browser configuration/settings, JavaScript injections, extensions, and with the help of other tools; some of them cannot be avoided at all. At this point, a change in the source code of the browser might be required, which is practically impossible for end user, and web automation developers.
Our research team regularly checks literature, new browser versions, and develop new tools to detect new browser fingerprints. Once a fingerprint is identified, a counter measure is added to Browseasy stack. Please
let us know, if you encounter a fingerprint detection that you believe Browseasy cannot handle.
How to enable it?
While connecting to your browser, append
stealth querystring param to your Browseasy connection string, and set the default viewport to null.
// Your unique connection string.
const BROWSEASY_CONNECTION_STRING = `${BROWSEASY_ENDPOINT}?code=${BROWSEASY_API_KEY}`;
// Your unique connection string with stealth mode enabled.
const BROWSEASY_STEALTH_CONNECTION_STRING = `${BROWSEASY_CONNECTION_STRING}&stealth`;
...
// Run headless browser on the cloud.
const browser = await puppeteer.connect({
browserWSEndpoint: BROWSEASY_STEALTH_CONNECTION_STRING,
// Always reset default viewport.
// When stealth mode enabled, Browseasy will launch your browser
// with a random resolution based on a sample distribution.
// See https://gs.statcounter.com/screen-resolution-stats/desktop/worldwide
defaultViewport: null
});
...
Warning
We strongly advice you not to change any configuration/property of the browser in your workload, when stealth mode is active. Including, but not limited to
- User Agent Header
- Object and/or functions in the browser JavaScript context
- Browser language
- Viewport and resolution
- Device emulations
Any change might break the stealth mode functionality and integrity for the period of your workload.