#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']