ReCaptcha + React JS

esp094

Client
Регистрация
07.09.2017
Сообщения
34
Благодарностей
6
Баллы
8
Доброго времени суток!

А как вы решаете ReCaptcha на сайтах с React JS?

Там значения полей хранятся во внутреннем состоянии React, и изменяются по-видимому гдето в глубине обфусцированного кода react.js. Поэтому сколько ни вставляй ответ антикапчи в HTML код - в POST запросе полетит старое пустое значение!

Вопрос могла бы решить подмена пост параметров, но метод instance.ChangeRequest по-видимому поломался на новых версиях зенно (5.16.0.1 и выше). Использовать старый метод решения рекапчи - отправляя на разбор картинку за картинкой и кликая их по одной - долго. Если послать обычный POST запрос, то ответ не будет обработан React приложением.

Быть может есть способ изменить состояние компонентов React из зенно? Есть идеи?
 

dio-dev

Client
Регистрация
05.11.2018
Сообщения
149
Благодарностей
54
Баллы
28
Скинь пример сайта.
 

itserviceinс

Активный пользователь
Регистрация
12.11.2017
Сообщения
108
Благодарностей
30
Баллы
28
при работе с реактом сталкивался, что вместо события "click"
надо слать initEvent('mousedown', true, true);
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 651
Благодарностей
655
Баллы
113
Что за js такой, не встречал еще, на каком сайте? У меня с сервисов итак через раз верный токен приходит (из 10 верных штуки 3-4)
 

esp094

Client
Регистрация
07.09.2017
Сообщения
34
Благодарностей
6
Баллы
8
Что за js такой, не встречал еще, на каком сайте? У меня с сервисов итак через раз верный токен приходит (из 10 верных штуки 3-4)
Благодарю всех за участие, вопрос решен.

Речь идет о фреймворке React https://ru.wikipedia.org/wiki/React

Для сабмита формы с рекапчей по инструкции надо вставлять решение в textarea с "id=g-recaptcha-response". Но в React используется виртуальный DOM, и проблема была в том что изменение полей реального DOMа не влекло за собой изменения значений в виртуальном DOMе. Данные же для отправки запроса брались из виртуального DOMа, а в него нет доступа извне приложения React.

Проблема была решена методом "ChangeResponse". Среди js-файлов возвращаемых сайтом удалось найти файл ответственный за формирование запроса (по подстроке "g-recaptcha-response="). В этом файле непонятную переменную из глубин запутанного кода я заменил на "document.getElementById('g-recaptcha-response').value" и все заработало.

Возможно это кому-то поможет.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)