From c3b2173f399683ad4dc7af65e9eb44745b63aba4 Mon Sep 17 00:00:00 2001 From: Alexandre Beloin Date: Mon, 14 Dec 2020 17:06:42 -0500 Subject: [PATCH] Return an error when no selectors are found, #25 --- src/routes.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/routes.ts b/src/routes.ts index b84724d..30b42bb 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -147,9 +147,12 @@ async function resolveChallenge(ctx: RequestContext, { url, maxTimeout, proxy, d if (response.status() > 400) { // detect cloudflare wait 5s + let selectorFoundCount = 0 for (const selector of CHALLENGE_SELECTORS) { const cfChallengeElem = await page.$(selector) if (cfChallengeElem) { + selectorFoundCount++ + log.debug(`'${selector}' challenge element detected.`) log.debug('Waiting for Cloudflare challenge...') let interceptingResult: ChallengeResolutionT; @@ -196,6 +199,12 @@ async function resolveChallenge(ctx: RequestContext, { url, maxTimeout, proxy, d log.debug(`No '${selector}' challenge element detected.`) } } + log.debug("Number of selector found: " + selectorFoundCount + ", total selector: " + CHALLENGE_SELECTORS.length) + if (selectorFoundCount == 0) + { + await page.close() + return ctx.errorResponse('No challenge selectors found, unable to proceed') + } } // it seems some captcha pages return 200 sometimes