From 478492187e15be7737415e1c6d8cd52d30933d5d Mon Sep 17 00:00:00 2001 From: spiduler Date: Thu, 22 Oct 2020 10:35:43 +0900 Subject: [PATCH] sdfsdfdsf --- index.js | 5 +---- src/component/SeleniumBrowser.js | 30 ++++++++++++++++-------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/index.js b/index.js index e0c9d93..ba83e20 100644 --- a/index.js +++ b/index.js @@ -63,10 +63,7 @@ process.on('SIGTERM', exitHandler.bind(null, { cleanup: true })); * request handler */ app.post('/', async (req, res, next) => { - browser.get(req.body).then(html => { - if (html) res.send(html) - else throw new Error('Emtpy html') - }).catch(e => { + browser.get(req.body).then(html => res.send(html)).catch(e => { if (e instanceof NoSuchSessionError) { logger.error({ reason: e.message, url: req.url }, 'Browser session expired') } else { diff --git a/src/component/SeleniumBrowser.js b/src/component/SeleniumBrowser.js index 44d4af4..d5541de 100644 --- a/src/component/SeleniumBrowser.js +++ b/src/component/SeleniumBrowser.js @@ -41,7 +41,7 @@ class SeleniumBrowser { async request(params) { let uri = params.uri if (this.isRecaptchaReseponseEmpty) { - return '' + throw new Error('2captcha still processing') } else { logger.info('URL %s', uri) if (uri.indexOf('://') > 3) { @@ -52,8 +52,7 @@ class SeleniumBrowser { .then(html => this.getHtml(driver, html, params)) }) } else { - logger.info('URL %s is not valid', uri) - return '' + throw new Error('Invalid URI - ' + uri) } } } @@ -61,6 +60,9 @@ class SeleniumBrowser { async getHtml(driver, html, params) { if (html.indexOf('grecaptcha') > -1 || html.indexOf('www.google.com/recaptcha/api2/anchor') > -1) { this.isRecaptchaReseponseEmpty = true + setTimeout(() => { + this.isRecaptchaReseponseEmpty = false + }, 1000 * 60) let iframeSrc = await driver.findElement(By.css('#grecaptcha iframe')).getAttribute('src') let captcha2Params = { "key": "62fc5ef52fd4befe266d224796a7ea6f", @@ -85,24 +87,24 @@ class SeleniumBrowser { res = await this.requestCaptchaResult(res, requestId) if (maxRetry == 0) break } while (res.request == 'CAPCHA_NOT_READY') - this.isRecaptchaReseponseEmpty = false + this.isRecaptchaReseponseEmpty = false return res }).then(res => { driver.executeScript('captchaCallback("' + res.request + '")') driver.wait(10000).then(d => { driver.findElement(By.css('#g-recaptcha-response')) - .then(() => { - throw new Error('Still captcha page') - }).catch(err => { - logger.error({message: err.message}, 'Since 2captcha solved') - this.pool.release(driver) - }) + .then(() => { + throw new Error('Still captcha page') + }).catch(err => { + logger.error({ message: err.message }, 'Since 2captcha solved') + this.pool.release(driver) + }) }) }).catch(error => { logger.error({ message: error.message }, 'Error occured while process with 2captcha') this.pool.release(driver) }) - return '' + throw new Error('2captcha processing') } else { if (params.waitElement) { return driver.get(params.uri) @@ -113,9 +115,9 @@ class SeleniumBrowser { this.pool.release(driver) return html }).catch(err => { - logger.error({message: err.message}, 'Wait element failed') + logger.error({ message: err.message }, 'Wait element failed') this.pool.release(driver) - return '' + throw new Error('2captcha processing') }) } else { this.pool.release(driver) @@ -139,7 +141,7 @@ class SeleniumBrowser { async close() { this.pool.drain().then(function () { this.pool.clear(); - }); + }) } loggingChrome() {