Как recaptcha 3 узнает, что я использую селен / хромедрайвер?
Мне интересно, как работает Recaptcha v3. Конкретно в браузере снимают отпечатки пальцев.
Когда я запускаю экземпляр chrome с помощью selenium/chromedriver и проверяю его на ReCaptcha 3 ( https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php), я всегда получаю оценку 0,1 при использовании selenium/chromedriver.
При использовании инкогнито с нормальным экземпляром я получаю 0.3.
Я побил другие системы обнаружения, внедрив JS и изменив объект веб-драйвера и перекомпилировав веб-драйвер из источника и изменив переменные $cdc_.
Я могу видеть, что выглядит как какой-то запутанный POST обратно на сервер, так что я собираюсь начать копать там.
Я просто хотел проверить, не желает ли кто-нибудь сначала поделиться с ним каким-либо советом или опытом о том, что он может искать, чтобы определить, использую ли я селен / хромедривер?
2 ответа
ReCaptcha
Веб-сайты могут легко обнаружить сетевой трафик и идентифицировать вашу программу как BOT. Google уже выпустил 5(пять) reCAPTCHA на выбор при создании нового сайта. Пока четыре из них активны и reCAPTCHA v1 отключается.
Версии и типы reCAPTCHA
- reCAPTCHA v3 (проверка запросов с оценкой): reCAPTCHA v3 позволяет проверить, является ли взаимодействие законным без какого-либо взаимодействия с пользователем. Это чистый API-интерфейс JavaScript, возвращающий счет, который дает вам возможность действовать в контексте вашего сайта: например, требовать дополнительных факторов аутентификации, отправки сообщения на модерацию или регулирования ботов, которые могут очищать контент.
- reCAPTCHA v2 - флажок "Я не робот": флажок "Я не робот" требует, чтобы пользователь установил флажок, указывающий, что пользователь не робот. Это либо сразу пропустит пользователя (без CAPTCHA), либо предложит ему проверить, являются ли они людьми. Это самый простой вариант для интеграции, и для его отображения требуется всего две строки HTML.
- reCAPTCHA v2-невидимый значок reCAPTCHA: невидимый значок reCAPTCHA не требует от пользователя нажатия на флажок, вместо этого он вызывается непосредственно, когда пользователь нажимает на существующую кнопку на вашем сайте, или может быть вызван с помощью вызова API JavaScript. Интеграция требует обратного вызова JavaScript, когда проверка reCAPTCHA завершена. По умолчанию только самый подозрительный трафик будет предложено решить капчу. Чтобы изменить это поведение, измените настройки безопасности своего сайта в дополнительных настройках.
- reCAPTCHA v2-Android: библиотека reCAPTCHA Android является частью API-интерфейсов SafetyNet служб Google Play. Эта библиотека содержит встроенные API-интерфейсы Android, которые можно интегрировать непосредственно в приложение. Вы должны настроить службы Google Play в своем приложении и подключиться к GoogleApiClient, прежде чем вызывать API reCAPTCHA. Это либо сразу пропустит пользователя (без приглашения CAPTCHA), либо заставит его проверить, являются ли они людьми.
- reCAPTCHA v1: reCAPTCHA v1 был закрыт с марта 2018 года.
Решение
Однако есть несколько общих подходов, чтобы избежать обнаружения при просмотре веб-страниц:
- Первый и главный атрибут сайта, который может определить ваш скрипт / программа, - эторазмер вашего монитора. Поэтому рекомендуется не использовать обычный видовой экран.
- Если вам нужно отправить несколько запросов на веб-сайт, продолжайте менять агента пользователя при каждом запросе. Здесь вы можете найти подробное обсуждение о том, как изменить пользовательский агент Google Chrome в Selenium?
- Для имитации поведения, подобного человеческому, вам может потребоваться замедлить выполнение скрипта даже за пределами создания WebDriverWait и Ожидаемые условия.
time.sleep(secs)
, Здесь вы можете найти подробную дискуссию о том, как перевести webdriver в python на миллисекунды.
Outro
Некоторая пища для размышлений:
- Selenium webdriver: изменение флага navigator.webdriver для предотвращения обнаружения селена
- Невозможно использовать Selenium для автоматизации входа на сайт Chase
- Может ли веб-сайт определить, когда вы используете селен с хромедрайвером?
- Оценка достоверности запроса с использованием API reCAPTCHA v3
Selenium и Puppeteer имеют некоторые настройки браузера, которые отличаются от неавтоматизированных браузеров. Кроме того, поскольку некоторые функции JS внедряются в браузер для манипулирования элементами, вам необходимо создать некоторое переопределение, чтобы избежать обнаружения.
Есть несколько хороших статей, объясняющих некоторые моменты об обнаружении селена и кукловода, пока он работает на сайте с механизмами обнаружения:
Обнаружение Chrome без головы, новые методы - вы можете использовать его, чтобы написать защитный код на вашем боте
Невозможно обнаружить и заблокировать Chrome Headless - объясняет в ясной и четкой форме различия, которые JS-код может обнаружить между браузером, запущенным автоматическим программным обеспечением, и реальным, а также о том, как его подделать.
https://github.com/paulirish/headless-cat-n-mouse - пример использования puppeteer + python, чтобы избежать обнаружения