diff --git a/src/workers/GeoCaptchaSolver.js b/src/workers/GeoCaptchaSolver.js index 0bb365c..3eaea56 100644 --- a/src/workers/GeoCaptchaSolver.js +++ b/src/workers/GeoCaptchaSolver.js @@ -10,6 +10,7 @@ const CAPTCHA_CONTAINER = "#captcha-container"; const WAV_URL_REGEX = "https:.+.wav"; const re = new RegExp(WAV_URL_REGEX); const SPEECH_TO_TEXT_HOST = "http://appointment.lpaconsulting.fr:8000" + // const SPEECH_TO_TEXT_HOST = "http://127.0.0.1:8000" function delay(delayInMs) { @@ -66,6 +67,17 @@ class GeoCaptchaSolver { this.device = device; } + async clearLastDigit(iframeHandler) { + let selector = "#captcha__audio > div.audio-captcha-input-container > input:nth-child(" + 6 + ")" + let lastDigit = await iframeHandler.locator(selector).inputValue() + if (lastDigit !== "") { + console.log(this.device.model() + ":last digit is not empty, clear it") + await iframeHandler.locator(selector).fill("") + } else { + console.log(this.device.model() + ":last digit is empty, do nothing") + } + } + async solve(onResult) { console.log(this.device.model() + ":solve() called.") console.log(this.device.model() + ":play audio") @@ -89,6 +101,9 @@ class GeoCaptchaSolver { // console.log("selector is " + selector) try { await iframeHandler.locator(selector).focus() + if (i === 5) { + await this.clearLastDigit(iframeHandler) + } await iframeHandler.locator(selector).fill("" + number_list[i - 1]) } catch (e) { console.log(e) @@ -100,7 +115,7 @@ class GeoCaptchaSolver { try { let content = await captcha_container.innerHTML() - console.log("inner container is " + content) + console.log(this.device.model() + ":inner container is " + content) try { if (number_list.length === 0) { onResult(false) @@ -132,10 +147,10 @@ class GeoCaptchaSolver { let fileName = crypto.randomUUID() + ".wav"; wget({url: audioUrl, dest: dest_dir + fileName}, async function (error, response, body) { if (error) { - console.log('--- error:'); + console.log(this.device.model() + ':--- error:'); console.log(error); // error encountered } else { - console.log('download the file successfully'); + console.log(this.device.model() + ':download the file successfully'); // send request to get numbers await sendRequest(dest_dir + fileName, callback); } @@ -144,7 +159,7 @@ class GeoCaptchaSolver { } async resetBrowser() { - console.log("will reset browser") + console.log(this.device.model() + ":will reset browser") await this.device.shell("pm clear com.android.chrome") await delay(1000) await this.device.shell("am set-debug-app --persistent com.android.chrome")