не удалось захватить ‘g-recaptcha-response’ для Recaptchav2 с помощью Selenium

#java #selenium #selenium-webdriver #selenium-chromedriver #recaptcha

#java #селен #selenium-webdriver #selenium-chromedriver #recaptcha

Вопрос:

Итак, я пытался создать webscraper, но некоторые данные, которые мне нужно очистить, заблокированы за reCAPTCHA. Из того, что я собрал, просматривая в Интернете, каждая капча имеет элемент TextArea с ‘g-recaptcha-response’, который заполняется по мере завершения captcha. Текущее решение для тестирования состоит в том, чтобы просто обойти captcha, выполнив это вручную, и попытаться захватить ответ и отправить его обратно в браузер без головы, однако я не могу получить ответ, поскольку, как только ответ отправлен, он больше не может найти элемент ответа.

 org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"*[name='g-recaptcha-response']"}
 
     public static String captchaSolver(String captchaUrl) {
        setUp();
        driver.get(captchaUrl);
        new WebDriverWait(driver,2);
        try {
            while (true) {
                String response = driver.findElement(By.name("g-recaptcha-response")).getText();
                if (response.length()!=0) {
                    System.out.println(response);
                    break;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }
 

Комментарии:

1. Существуют механизмы Recaptcha для остановки таких роботов, как selenium. Даже если вам удастся захватить ответ один раз, проверка начинает цикл и никогда не заканчивается.

Ответ №1:

Попробуйте найти элемент с помощью CSS следующим образом:

*[name * = 'g-recaptcha-response']