Обзор:
Извините, что отвечаю на плохие новости, но после исследования и отладки стало ясно, что нет возможности настроить стиль новых элементов управления reCAPTCHA. Элементы управления обернуты в iframe
, что предотвращает использование CSS для их стилизации , а политика Same-Origin предотвращает доступ JavaScript к содержимому, исключая даже хакерское решение.
Почему нет кастомного API ?:
В отличие от reCAPTCHA API версии 1.0 , в API версии 2.0 нет параметров настройки . Если мы посмотрим, как работает этот новый API, неудивительно, почему.
Хотя новый API reCAPTCHA может показаться простым, за этим скромным флажком скрывается высокая степень сложности. CAPTCHA долгое время полагались на неспособность роботов решать искаженный текст. Однако наше недавнее исследование показало, что сегодняшняя технология искусственного интеллекта может решить даже самый сложный вариант искаженного текста с точностью 99,8%. Таким образом, искаженный текст сам по себе больше не является надежным тестом.
Чтобы противостоять этому, в прошлом году мы разработали серверную часть расширенного анализа рисков для reCAPTCHA, которая активно учитывает все действия пользователя с CAPTCHA - до, во время и после - чтобы определить, является ли этот пользователь человеком. Это позволяет нам меньше полагаться на набор искаженного текста и, в свою очередь, обеспечивает лучший опыт для пользователей. Мы говорили об этом в нашем посте ко Дню святого Валентина ранее в этом году.
Если бы вы могли напрямую управлять стилем элементов управления, вы могли бы легко вмешаться в логику профилирования пользователей, которая делает возможной новую reCAPTCHA.
А как насчет пользовательской темы ?:
Теперь новый API предлагает theme
вариант , с помощью которого вы можете выбрать предустановленную тему, такую как light
и dark
. Однако в настоящее время нет способа создать собственную тему. Если мы проверим iframe
, мы обнаружим, что theme
имя передается в строке запроса src
атрибута. Этот URL-адрес выглядит примерно так.
https://www.google.com/recaptcha/api2/anchor?...&theme=dark&...
Этот параметр определяет, какое имя класса CSS используется в элементе-оболочке в iframe
и определяет используемую предустановленную тему.
Рытье через уменьшенную источник, я обнаружил , что есть на самом деле 4 действительных значений темы, которые больше , чем 2 , перечисленные в документации, но default
и standard
такое же , как light
.
Здесь мы можем увидеть код, который выбирает имя класса из этого объекта.
Для настраиваемой темы нет кода, и если theme
указано любое другое значение, она будет использовать эту standard
тему.
В заключение:
В настоящее время нет возможности полностью iframe
стилизовать новые элементы reCAPTCHA, можно стилизовать только элементы оболочки вокруг них. Это почти наверняка было сделано намеренно, чтобы пользователи не нарушали логику профилирования пользователей, которая делает возможной установку нового флажка без ввода капчи. Возможно, что Google может реализовать ограниченный API пользовательских тем, возможно, позволяющий выбирать пользовательские цвета для существующих элементов, но я не ожидал бы, что Google реализует полное стили CSS.