为了账号安全,请及时绑定邮箱和手机立即绑定

Java Selenium + 2Captcha + 提交表单

Java Selenium + 2Captcha + 提交表单

拉莫斯之舞 2023-08-04 15:25:39
我有 site_key 和 api_key ,现在我正在发送 api_key + site_key 并且它返回我response_token,我已添加返回的响应令牌,g-recaptcha-response但它没有提交表单。我想要的是:我可以解决验证码并提交表单。这是我当前的java代码: System.setProperty("webdriver.chrome.driver", "chromedriver.exe");    ChromeDriver driver;    driver = new ChromeDriver();    driver.manage().deleteAllCookies();    driver.manage().window().maximize();    driver.get("https://id.sonyentertainmentnetwork.com/signin/?client_id=fe1fdbfa-f1a1-47ac-b793-e648fba25e86&redirect_uri=https://secure.eu.playstation.com/psnauth/PSNOAUTHResponse/pdc/&service_entity=urn:service-entity:psn&response_type=code&scope=psn:s2s&ui=pr&service_logo=ps&request_locale=en_GB&error=login_required&error_code=4165&error_description=User+is+not+authenticated&no_captcha=false#/signin?entry=%2Fsignin");    Thread.sleep(5000);    driver.findElement(By.xpath("//input[@title='Sign-In ID (Email Address)']")).sendKeys("email");    Thread.sleep(2000);    driver.findElement(By.xpath("//input[@title='Password']")).sendKeys("password");    Thread.sleep(2000);    driver.findElement(By.xpath("//button[@class='primary-button row-button text-button touch-feedback']")).click();    Thread.sleep(3000);    By captcha = By.xpath("//iframe[@title='recaptcha challenge']");    String src = driver.findElement(captcha).getAttribute("src");    String key = getKey(src);    System.out.println(key);    String apiKey = "API_KEY";    String googleKey = key;更新的代码:          js.executeScript("document.getElementById(\"g-recaptcha-response\").innerHTML = \'" + responseToken + "\';");        Thread.sleep(500);        WebElement frameElement = driver.findElement(captcha);        driver.switchTo().frame(frameElement);                 js.executeScript("document.getElementById('recaptcha-verify-button').click();");它正在单击按钮,但是,它显示了Please select all matching images.
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您所需要做的就是像这样提交:


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

Thread.sleep(500);

js.executeScript("document.getElementById('captcha-form').submit();");

也不要忘记检查此 ID:“captcha-form”,它可以不同


要到达元素“recaptcha-verify-button”:


收到 API 的响应后;


By frame = By.xpath("//iframe[@title='recaptcha challenge']");


WebElement frameElement = driver.findElement(frame);


driver.switchTo.frame(frameElement);

然后你就可以执行你的脚本了。最后,对于您的脚本,如果您的验证码表单是一个按钮



无法调用submit();



可以调用click();


最终答案:


还要检查一下:js.executeScript("widgetVerified('TOKEN');");


要查找调用的函数,widgetVerified()请在控制台中运行此代码。


___grecaptcha_cfg.clients[0]

这将返回一个 json,在该 json 中尝试在 @Awais 情况下找到回调函数wigdetVerified(e)


警告:不要使用任何广告拦截器


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信