Как не принимать во внимание проверку формы javascript с помощью python selenium - PullRequest
0 голосов
/ 10 июня 2018

Я пишу скрипт на python, который заполняет и отправляет регистрационную форму.Я использую веб-драйвер Selenium, потому что страница загружается с помощью JavaScript.

Я нашел способ решения reCaptcha.Капча отправляется людям, которые ее решают.Я получаю код, который ввожу в соответствующее поле.Я бы отправил его в запросе POST, но когда я попытался это сделать, мой запрос был отклонен.

Итак, мой скрипт заполняет поля и нажимает кнопку отправки (которую, вероятно, слушает js), но затем в разделеreCaptcha Я вижу «пожалуйста, заполните поле» каждый раз.Я пробовал смоделированный клик в reCaptcha iframe, но он не дает результатов.

Мой вопрос: могу ли я каким-то образом обмануть форму, чтобы javascript мог подумать, что это поле заполнено?В запросе будет правильное решение с использованием капчи, но мне нужно только отправить его.

На этой странице Вы можете увидеть пример reCaptcha и на этой странице, где яхочу заполнить форму.

Это мой код заполнения reCaptcha:

Отправка reCaptcha людям, которые ее решают:

 result = NoCaptchaTaskProxyless.NoCaptchaTaskProxyless(anticaptcha_key = ANTICAPTCHA_KEY)\
                                                .captcha_handler(websiteURL = regURL,
                                                                 websiteKey = siteKey)

print(result)

СозданиеПоле ответа reCaptcha видимое:

captchaInput = driver.find_element_by_name("g-recaptcha-response")
driver.execute_script("arguments[0].style = 'display: block;';", captchaInput)

Заполнение поля ответа:

captchaInput.send_keys(result['solution']['gRecaptchaResponse'])

Отправка формы:

submit = driver.find_element_by_xpath("/html/body/div[1]/div/div/div[2]/div/div[3]/form/button")

submit.click()

И это результат: снимок экрана («Поле Proszę wypełnić» означает «Пожалуйста, заполните поле»)

1 Ответ

0 голосов
/ 12 июня 2018

Я решил эту проблему.Я добавляю этот ответ, потому что он может быть кому-то полезен.

Если вы наберете его в консоли javascript:

___grecaptcha_cfg.clients[0].aa.l.callback

Вы увидите функцию, которая отвечает за принятие данных передачи.

Все, что вам нужно сделать, это вызвать его в своем коде.

Весь процесс описан на этой странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...