java - 使用 Selenium 和 2Captcha 解决图片验证码 (JAVA)

标签 java selenium recaptcha captcha 2captcha

我一直在努力使用 selenium、java、2captcha 的 api 解决验证码问题。

它点击了验证按钮,但没有解决图片,没有错误弹出..

这是我的代码:

private void solveCaptcha(String apiKey) {
    String googleKey = "6Lcsv3oUAAAAAGFhlKrkRb029OHio098bbeyi_Hv"; 
    String pageUrl = "https://secure.runescape.com/m=weblogin/loginform?theme=oldschool&mod=www";
    TwoCaptchaService service = new TwoCaptchaService(apiKey, googleKey, pageUrl);         

    try {
        String responseToken = service.solveCaptcha();
        By frame = By.xpath("//iframe[@title='recaptcha challenge']");

        WebElement frameElement = driver.findElement(frame);

        driver.switchTo().frame(frameElement);
        System.out.println("Solved and Generated Response Token: " + responseToken);
        JavascriptExecutor js = (JavascriptExecutor) driver;

        js.executeScript("document.getElementById('recaptcha-token').innerHTML = '" + responseToken + "';");
        Thread.sleep(500);
        js.executeScript("document.getElementById('recaptcha-verify-button').click();");
    } catch (InterruptedException e) {
        System.out.println("ERROR case 1");
        e.printStackTrace();
    } catch (IOException e) {
        System.out.println("ERROR case 2");
        e.printStackTrace();
    }
}

非常感谢您的帮助

最佳答案

试试这个。

  private void solveCaptcha(String apiKey) {
            String googleKey = "6Lcsv3oUAAAAAGFhlKrkRb029OHio098bbeyi_Hv"; 
            String pageUrl = "https://secure.runescape.com/m=weblogin/loginform?theme=oldschool&mod=www";
            TwoCaptchaService service = new TwoCaptchaService(apiKey, googleKey, pageUrl);         

            try {
                String responseToken = service.solveCaptcha();

                System.out.println("Solved and Generated Response Token: " + responseToken);
                JavascriptExecutor js = (JavascriptExecutor) driver;

                js.executeScript("document.getElementById('g-recaptcha-response').innerHTML = '" + responseToken + "';");
                Thread.sleep(500);


                js.executeScript("onSubmit()");
            } catch (InterruptedException e) {
                System.out.println("ERROR case 1");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("ERROR case 2");
                e.printStackTrace();
            }
        }

关于java - 使用 Selenium 和 2Captcha 解决图片验证码 (JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59925739/

相关文章:

jquery - recaptcha 在 bootstrap 3 底部页面显示空白

java - 减少 getTableCellRendererComponent 的调用次数

java - 如何测试类中的 for 循环是否可用?

Python Selenium Webdriver : how to select more than one element using get_attribute

python - 通过 Selenium Hub 获取 Chrome 时遇到问题

javascript - 验证码 2.0 : enable Submit button on callback if recaptcha successful

java - 迭代列表并将数据放入 hashmap

java - 如何提取子字符串(html)和另一个子字符串(将用于正则表达式)并将其全部放置在正确的格式中?

java - 防止在 selenium webdriver 测试中加载外部内容

javascript - Cappuccino :键盘事件在 reCAPTCHA 输入字段中被压缩