Forked from tegansnyder/Preventing-Puppeteer-Detection.md
Created
January 5, 2022 22:59
-
-
Save mateuszszulc/f6f5f166d86172e1bda0383847236c7c to your computer and use it in GitHub Desktop.
Revisions
-
tegansnyder created this gist
Feb 23, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,52 @@ I’m looking for any tips or tricks for making chrome headless mode less detectable. Here is what I’ve done so far: Set my args as follows: ```js const run = (async () => { const args = [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-infobars', '--window-position=0,0', '--ignore-certifcate-errors', '--ignore-certifcate-errors-spki-list', '--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3312.0 Safari/537.36"' ]; const options = { args, headless: true, ignoreHTTPSErrors: true, userDataDir: './tmp' }; const browser = await puppeteer.launch(options); ``` I’m loading in a preload file that overrides some window.navigator globals: ```js const preloadFile = fs.readFileSync('./preload.js', 'utf8'); await page.evaluateOnNewDocument(preloadFile); ``` ##### preload.js ```js // overwrite the `languages` property to use a custom getter Object.defineProperty(navigator, "languages", { get: function() { return ["en-US", "en"]; }; }); // overwrite the `plugins` property to use a custom getter Object.defineProperty(navigator, 'plugins', { get: function() { // this just needs to have `length > 0`, but we could mock the plugins too return [1, 2, 3, 4, 5]; }, }); ``` I see there are some other things suggested here https://intoli.com/blog/making-chrome-headless-undetectable/ but I'm not 100% certain how to implement them in puppeteer. Any ideas tips or tricks?