diff --git a/packages/puppeteer-extra-plugin-recaptcha/src/index.ts b/packages/puppeteer-extra-plugin-recaptcha/src/index.ts index 863853b4f..134b8c08e 100644 --- a/packages/puppeteer-extra-plugin-recaptcha/src/index.ts +++ b/packages/puppeteer-extra-plugin-recaptcha/src/index.ts @@ -195,7 +195,8 @@ export class PuppeteerExtraPluginRecaptcha extends PuppeteerExtraPlugin { async getRecaptchaSolutions( captchas: types.CaptchaInfo[], - provider?: types.SolutionProvider + provider?: types.SolutionProvider, + extraData: { [key: string]: any } = {}, ) { this.debug('getRecaptchaSolutions', { captchaNum: captchas.length }) provider = provider || this.opts.provider @@ -222,7 +223,8 @@ export class PuppeteerExtraPluginRecaptcha extends PuppeteerExtraPlugin { this, captchas, provider.token, - provider.opts || {} + provider.opts || {}, + extraData ) response.error = response.error || @@ -276,7 +278,8 @@ export class PuppeteerExtraPluginRecaptcha extends PuppeteerExtraPlugin { } async solveRecaptchas( - page: Page | Frame + page: Page | Frame, + extraData: { [key: string]: any } = {}, ): Promise { this.debug('solveRecaptchas') const response: types.SolveRecaptchasResult = { @@ -301,7 +304,7 @@ export class PuppeteerExtraPluginRecaptcha extends PuppeteerExtraPlugin { const { solutions, error: solutionsError - } = await this.getRecaptchaSolutions(response.captchas) + } = await this.getRecaptchaSolutions(response.captchas, undefined, extraData) response.solutions = solutions const { @@ -331,7 +334,7 @@ export class PuppeteerExtraPluginRecaptcha extends PuppeteerExtraPlugin { prop.enterRecaptchaSolutions = async (solutions: types.CaptchaSolution[]) => this.enterRecaptchaSolutions(prop, solutions) // Add convenience methods that wraps all others - prop.solveRecaptchas = async () => this.solveRecaptchas(prop) + prop.solveRecaptchas = this.solveRecaptchas.bind(this, prop) } async onPageCreated(page: Page) { diff --git a/packages/puppeteer-extra-plugin-recaptcha/src/provider/2captcha.ts b/packages/puppeteer-extra-plugin-recaptcha/src/provider/2captcha.ts index f56e66010..a6f3b6fcd 100644 --- a/packages/puppeteer-extra-plugin-recaptcha/src/provider/2captcha.ts +++ b/packages/puppeteer-extra-plugin-recaptcha/src/provider/2captcha.ts @@ -54,11 +54,12 @@ async function decodeRecaptchaAsync( export async function getSolutions( captchas: types.CaptchaInfo[] = [], token: string = '', - opts: TwoCaptchaProviderOpts = {} + opts: TwoCaptchaProviderOpts = {}, + extraData: { [key: string]: any } = {}, ): Promise { opts = { ...providerOptsDefaults, ...opts } const solutions = await Promise.all( - captchas.map(c => getSolution(c, token, opts)) + captchas.map(c => getSolution(c, token, opts, extraData)) ) return { solutions, error: solutions.find(s => !!s.error) } } @@ -66,7 +67,8 @@ export async function getSolutions( async function getSolution( captcha: types.CaptchaInfo, token: string, - opts: TwoCaptchaProviderOpts + opts: TwoCaptchaProviderOpts, + extraData: { [key: string]: any } = {}, ): Promise { const solution: types.CaptchaSolution = { _vendor: captcha._vendor, @@ -79,7 +81,6 @@ async function getSolution( solution.id = captcha.id solution.requestAt = new Date() debug('Requesting solution..', solution) - const extraData = {} if (captcha.s) { extraData['data-s'] = captcha.s // google site specific property }