diff --git a/src/captcha/hcaptcha-solver.ts b/src/captcha/hcaptcha-solver.ts index 18ae718..856e550 100644 --- a/src/captcha/hcaptcha-solver.ts +++ b/src/captcha/hcaptcha-solver.ts @@ -12,8 +12,7 @@ import { SolverOptions } from '.' export default async function solve({ url }: SolverOptions): Promise { try { - const token = await solveCaptcha(url) - return token + return await solveCaptcha(url) } catch (e) { console.error(e) return null diff --git a/src/log.ts b/src/log.ts index 915cad6..443adad 100644 --- a/src/log.ts +++ b/src/log.ts @@ -1,6 +1,6 @@ let requests = 0 -const LOG_HTML: boolean = Boolean(process.env.LOG_HTML) || false +const LOG_HTML: boolean = process.env.LOG_HTML == 'true'; export default { incRequests: () => { requests++ }, @@ -9,10 +9,10 @@ export default { this.debug(html) }, ...require('console-log-level')( - { - level: process.env.LOG_LEVEL || 'info', + {level: process.env.LOG_LEVEL || 'info', prefix(level: string) { - return `${new Date().toISOString()} ${level.toUpperCase()} REQ-${requests}` + const req = (requests > 0) ? ` REQ-${requests}` : ''; + return `${new Date().toISOString()} ${level.toUpperCase()}${req}` } } ) diff --git a/src/providers/cloudflare.ts b/src/providers/cloudflare.ts index 2b35775..6550cb3 100644 --- a/src/providers/cloudflare.ts +++ b/src/providers/cloudflare.ts @@ -117,7 +117,7 @@ export default async function resolveChallenge(url: string, page: Page, response // ignore preset event listeners on the form await page.evaluate(() => { - window.addEventListener('submit', (e) => { event.stopPropagation() }, true) + window.addEventListener('submit', (e) => { e.stopPropagation() }, true) }) // it seems some sites obfuscate their challenge forms diff --git a/src/routes.ts b/src/routes.ts index 8fcca22..c71a28e 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -180,18 +180,17 @@ async function setupPage(ctx: RequestContext, params: BaseRequestAPICall, browse } if (headers) { - log.debug(`Adding custom headers: ${JSON.stringify(headers, null, 2)}`,) + log.debug(`Adding custom headers: ${JSON.stringify(headers)}`) overrideResolvers.headers = request => Object.assign(request.headers(), headers) } if (cookies) { - log.debug(`Setting custom cookies: ${JSON.stringify(cookies, null, 2)}`,) + log.debug(`Setting custom cookies: ${JSON.stringify(cookies)}`) await page.setCookie(...cookies) } // if any keys have been set on the object if (Object.keys(overrideResolvers).length > 0) { - log.debug(overrideResolvers) let callbackRunOnce = false const callback = (request: Request) => { @@ -208,8 +207,7 @@ async function setupPage(ctx: RequestContext, params: BaseRequestAPICall, browse overrides[key] = overrideResolvers[key](request) }); - log.debug(overrides) - + log.debug(`Overrides: ${JSON.stringify(overrides)}`) request.continue(overrides) } @@ -253,7 +251,9 @@ const browserRequest = async (ctx: RequestContext, params: BaseRequestAPICall) = log.error(error) return ctx.errorResponse("Unable to process browser request. Error: " + error) } finally { - if (oneTimeSession) { sessions.destroy(sessionId) } + if (oneTimeSession) { + await sessions.destroy(sessionId) + } } } diff --git a/src/session.ts b/src/session.ts index 3921917..aea6d8b 100644 --- a/src/session.ts +++ b/src/session.ts @@ -82,7 +82,7 @@ export default { puppeteerOptions.executablePath = path.join(path.dirname(process.execPath), 'chrome', exe) } - log.debug('Launching headless browser...') + log.debug('Launching browser...') // TODO: maybe access env variable? // TODO: sometimes browser instances are created and not connected to correctly.