Я пытаюсь создать свой собственный менеджер паролей. Текущий сайт, который я создаю, - это starbucks.com.
Я взаимодействую с веб-сайтами с помощью C # и Selenium webdriver, в частности chromedriver.exe.
Страница входа (на https://www.starbucks.com/account/signin), принимает хорошие учетные данные, но затем выгружает меня на домашнюю страницу без входа в систему, если страница запускается с помощью chromedriver. Ничто из того, что я делаю на странице, не влияет на это. Новое окно браузера вручную работает нормально, но версия с хромированным драйвером блокируется, даже если нет взаимодействия со страницей, и я ввожу данные и нажимаю кнопку вручную.
Просмотр HTML страницы показывает несколько огромных функций javascript, в которых есть строковый webdriver, и я могу только предположить, что он каким-то образом проверяет и блокирует webdriver. Если я отключу javascript для страницы, форма входа не будет работать.
Я думаю, что эту блокировку выполняет сервис под названием Optimizely. Это может быть не связано, но я нашел этот флаг на их веб-сайте, и он не влияет на проблему. Флаг выглядит так: https://www.starbucks.com/account/signin?optimizely_opt_out=true
Я проверил сетевой трафик между двумя нажатиями кнопок. Один с веб-драйвером, а другой без веб-драйвера. Они очень похожи, но обычные ссылки на отправку примерно вдвое меньше файлов cookie. Ни один из них, похоже, не ссылается на веб-драйвер, поэтому я думаю, что блокировка снимается до щелчка. Короче не могу найти.
Кто-нибудь знает, как может работать это обнаружение webdriver? Есть ли способ обойти это обнаружение? Я думаю, что это делается где-то в javascipt.