Я пытаюсь сделать своего онлайн-бота незаметным. Я прочитал множество статей, как это сделать, и я собрал все советы вместе и использовал их. Один из них - изменить window.navigator.webdriver
.
Мне удалось изменить window.navigator.webdriver
в кукловоде с помощью этого кода:
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
});
});
Я отлично обхожу тест это:
Однако тест это все еще как-то надо мной смеется:
Почему WEBDRIVER несовместим?
Это не помогает, если честно, это еще хуже, и это потому, что window.navigator
доступен только для чтения и delete
даже не удалит этот объект. Вот почему я использую Object.defineProperty
, чтобы перезаписать его. Когда я удалил Object.defineProperty
и вместо этого добавил delete window.navigator.webdriver;
, то, когда я открываю консоль в chromedriver puppeteer и пишу в консоли window.navigator.webdriver
, это дает мне true. Поэтому тест явно провален.
Попробуй это,
Во-первых, удалите определение, оно не будет работать, если вы определите и удалите его из прототипа.
Object.defineProperty(navigator, 'webdriver', ()=>{}) // <-- delete this part
Замените свой код на этот.
delete navigator.__proto__.webdriver;
Удаление напрямую просто удаляет экземпляр объекта, а не фактическое определение. Геттер и сеттер все еще там, поэтому браузер может их найти.
Однако, если вы удалите из фактического прототипа, он больше не будет существовать ни в каком экземпляре.
Вы упомянули, что хотите, чтобы ваше приложение не обнаруживалось, есть много плагинов, которые достигают того же, например, этот пакет под названием кукловод-дополнительный-плагин-стелс включает в себя несколько крутых методов обнаружения ботов. Иногда лучше просто повторно использовать некоторые пакеты, чем заново создавать решение снова и снова.
PS: я могу ошибаться в приведенном выше объяснении, не стесняйтесь направлять меня, чтобы я мог улучшить ответ.
Это очень странно, но это не работает в моей среде: i.imgur.com/6RnZgD1.png Не могли бы вы поделиться своим проектом на github/bitbucket, чтобы я мог сопоставить различия?
Это будет работать, удалите раздел определения веб-драйвера выше.
Правильно, потому что я несколько раз переопределял объект навигатора.
Обновил ответ.
Большое спасибо за "Дополнительные советы" Я не знал о существовании этого пакета.
Также повысился на puppeteer-extra-plugin-stealth
!
Попробуйте
delete window.navigator.webdriver
и посмотрите, поможет ли это