亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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("http://input[@title='Sign-In ID (Email Address)']")).sendKeys("email");? ? Thread.sleep(2000);? ? driver.findElement(By.xpath("http://input[@title='Password']")).sendKeys("password");? ? Thread.sleep(2000);? ? driver.findElement(By.xpath("http://button[@class='primary-button row-button text-button touch-feedback']")).click();? ? Thread.sleep(3000);? ? By captcha = By.xpath("http://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 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號