From 56dd2fe4b78537574360a173259c873115b764f9 Mon Sep 17 00:00:00 2001 From: Travis Fischer Date: Sat, 17 Dec 2022 23:30:51 -0600 Subject: [PATCH] fix: 2captcha support when using typescript/tsx/esbuild --- package.json | 2 +- pnpm-lock.yaml | 44 ++++++++++++++++++++++---------------------- src/openai-auth.ts | 21 ++++++++++++++++----- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 456e4f0..2939ab4 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "html-to-md": "^0.8.3", "p-timeout": "^6.0.0", "puppeteer-extra": "^3.3.4", - "puppeteer-extra-plugin-recaptcha": "^3.6.6", + "puppeteer-extra-plugin-recaptcha": "npm:@fisch0920/puppeteer-extra-plugin-recaptcha@^3.6.6", "puppeteer-extra-plugin-stealth": "^2.11.1", "random": "^4.1.0", "remark": "^14.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5e7283..190b2ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ specifiers: prettier: ^2.8.0 puppeteer: ^19.4.0 puppeteer-extra: ^3.3.4 - puppeteer-extra-plugin-recaptcha: ^3.6.6 + puppeteer-extra-plugin-recaptcha: npm:@fisch0920/puppeteer-extra-plugin-recaptcha@^3.6.6 puppeteer-extra-plugin-stealth: ^2.11.1 random: ^4.1.0 remark: ^14.0.2 @@ -38,7 +38,7 @@ dependencies: html-to-md: 0.8.3 p-timeout: 6.0.0 puppeteer-extra: 3.3.4_puppeteer@19.4.0 - puppeteer-extra-plugin-recaptcha: 3.6.6_puppeteer-extra@3.3.4 + puppeteer-extra-plugin-recaptcha: /@fisch0920/puppeteer-extra-plugin-recaptcha/3.6.6_puppeteer-extra@3.3.4 puppeteer-extra-plugin-stealth: 2.11.1_puppeteer-extra@3.3.4 random: 4.1.0 remark: 14.0.2 @@ -346,6 +346,26 @@ packages: dev: true optional: true + /@fisch0920/puppeteer-extra-plugin-recaptcha/3.6.6_puppeteer-extra@3.3.4: + resolution: {integrity: sha512-KI12BbqOupDm8+R21IS645L9/SzdYMVvMFdvGy2zIePJ5qPYNcqUIqBSA86hdk0vM2WJ1G5q1t7AUQoemGwbeQ==} + engines: {node: '>=9.11.2'} + peerDependencies: + playwright-extra: '*' + puppeteer-extra: '*' + peerDependenciesMeta: + playwright-extra: + optional: true + puppeteer-extra: + optional: true + dependencies: + debug: 4.3.4 + merge-deep: 3.0.3 + puppeteer-extra: 3.3.4_puppeteer@19.4.0 + puppeteer-extra-plugin: 3.2.2_puppeteer-extra@3.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -3075,26 +3095,6 @@ packages: - supports-color - utf-8-validate - /puppeteer-extra-plugin-recaptcha/3.6.6_puppeteer-extra@3.3.4: - resolution: {integrity: sha512-SVbmL+igGX8m0Qg9dn85trWDghbfUCTG/QUHYscYx5XgMZVVb0/v0a6MqbPdHoKmBx5BS2kLd6rorMlncMcXdw==} - engines: {node: '>=9.11.2'} - peerDependencies: - playwright-extra: '*' - puppeteer-extra: '*' - peerDependenciesMeta: - playwright-extra: - optional: true - puppeteer-extra: - optional: true - dependencies: - debug: 4.3.4 - merge-deep: 3.0.3 - puppeteer-extra: 3.3.4_puppeteer@19.4.0 - puppeteer-extra-plugin: 3.2.2_puppeteer-extra@3.3.4 - transitivePeerDependencies: - - supports-color - dev: false - /puppeteer-extra-plugin-stealth/2.11.1_puppeteer-extra@3.3.4: resolution: {integrity: sha512-n0wdC0Ilc9tk5L6FWLyd0P2gT8b2fp+2NuB+KB0oTSw3wXaZ0D6WNakjJsayJ4waGzIJFCUHkmK9zgx5NKMoFw==} engines: {node: '>=8'} diff --git a/src/openai-auth.ts b/src/openai-auth.ts index 60f4bfe..24ec841 100644 --- a/src/openai-auth.ts +++ b/src/openai-auth.ts @@ -84,12 +84,18 @@ export async function getOpenAIAuth({ }) // NOTE: this is where you may encounter a CAPTCHA - if (hasRecaptchaPlugin) { - await page.solveRecaptchas() - } - await checkForChatGPTAtCapacity(page, { timeoutMs }) + if (hasRecaptchaPlugin) { + const captchas = await page.findRecaptchas() + + if (captchas?.filtered?.length) { + console.log('solving captchas using 2captcha...') + const res = await page.solveRecaptchas() + console.log('captcha result', res) + } + } + // once we get to this point, the Cloudflare cookies should be available // login as well (optional) @@ -133,8 +139,13 @@ export async function getOpenAIAuth({ if (hasNopechaExtension) { await waitForRecaptcha(page, { timeoutMs }) } else if (hasRecaptchaPlugin) { + console.log('solving captchas using 2captcha...') const res = await page.solveRecaptchas() - console.log('solveRecaptchas result', res) + if (res.captchas?.length) { + console.log('captchas result', res) + } else { + console.log('no captchas found') + } } await delay(1200)