sereneblue / chameleon

WebExtension port of Random Agent Spoofer
https://sereneblue.github.io/chameleon
GNU General Public License v3.0
500 stars 53 forks source link

`navigator.plugins` is not an instance of `PluginArray`, causing false positive BotD detection #586

Closed AJGranowski closed 1 month ago

AJGranowski commented 1 month ago

Expected Behavior

navigator.plugins instanceof PluginArray === true

Expected BotD result:

JSON.stringify(await BotD.load().then((bd) => bd.detect())) 
'{"bot":false}' 

Current Behavior

navigator.plugins instanceof PluginArray === false

This discrepancy causes false positive BotD detection as a headless chrome bot. Disabling Chameleon or changing this line in BotD to return true causes BotD to correctly return a not-bot result.

You can probe the BotD detector using https://xcancel.com/search [1]

JSON.stringify(await BotD.load().then((bd) => bd.detect())) 
'{"bot":true,"botKind":"headless_chrome"}'

Context (Environment)

Chameleon v0.22.60
Firefox 128.0 (64-bit) on Windows 10

Related to BotD#171.

sereneblue commented 1 month ago

@AJGranowski Thanks! This will be fixed in the next update.