Попробуйте это,
Сначала удалите определение, оно не будет работать, если вы определите и удалите из прототипа.
Object.defineProperty(navigator, 'webdriver', ()=>{}) // <-- delete this part
Замените ваш код этим.
delete navigator.__proto__.webdriver;
Результат:
Почему это работает?
Удаление напрямую, просто удалите экземпляр объекта, а не фактическое определение. Получатель и установщик все еще там, так что браузер может найти его.
Однако, если вы удалите из реального прототипа, он больше не будет существовать вообще.
Дополнительные советы
Вы упомянули, что хотите сделать свое приложение необнаружимым, есть много плагинов, которые достигают того же самого, например, этот пакет под названием puppeteer-extra-plugin-stealth включает в себя несколько классных методов обнаружения анти-ботов. Иногда лучше просто повторно использовать некоторые пакеты, чем заново создавать решение снова и снова.
PS: Я могу ошибаться из-за вышеприведенного объяснения, не стесняйтесь направлять меня, чтобы я мог улучшить ответ.