diff --git a/README.md b/README.md index b1ae1ad..ceab20a 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,7 @@ headers | Optional. To specify user headers. maxTimeout | Optional, default value 60000. Max timeout to solve the challenge in milliseconds. cookies | Optional. Will be used by the headless browser. Follow [this](https://github.com/puppeteer/puppeteer/blob/v3.3.0/docs/api.md#pagesetcookiecookies) format. returnOnlyCookies | Optional, default false. Only returns the cookies. Response data, headers and other parts of the response are removed. +returnRawHtml | Optional, default false. The response data will be returned without JS processing. This is useful for JSON or plain text content. Example response from running the `curl` above: diff --git a/src/routes.ts b/src/routes.ts index cd69f0e..44b82a6 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -36,9 +36,9 @@ interface BaseRequestAPICall extends BaseAPICall { proxy?: any, // TODO: use interface not any download?: boolean returnOnlyCookies?: boolean + returnRawHtml?: boolean } - interface Routes { [key: string]: (ctx: RequestContext, params: BaseAPICall) => void | Promise } @@ -86,7 +86,9 @@ async function resolveChallengeWithTimeout(ctx: RequestContext, params: BaseRequ } } -async function resolveChallenge(ctx: RequestContext, { url, proxy, download, returnOnlyCookies }: BaseRequestAPICall, page: Page): Promise { +async function resolveChallenge(ctx: RequestContext, + { url, proxy, download, returnOnlyCookies, returnRawHtml }: BaseRequestAPICall, + page: Page): Promise { let status = 'ok' let message = '' @@ -132,6 +134,8 @@ async function resolveChallenge(ctx: RequestContext, { url, proxy, download, ret // fix since I am short on time response = await page.goto(url, { waitUntil: 'domcontentloaded' }) payload.result.response = (await response.buffer()).toString('base64') + } else if (returnRawHtml) { + payload.result.response = await response.text() } else { payload.result.response = await page.content() }