Fix TypeScript compilation and bump minor version

This commit is contained in:
ngosang 2020-12-13 00:46:34 +01:00
parent ff6cb05ac6
commit f653d154f2
4 changed files with 13 additions and 11 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "flaresolverr", "name": "flaresolverr",
"version": "1.1.2", "version": "1.1.3",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "flaresolverr", "name": "flaresolverr",
"version": "1.1.2", "version": "1.1.3",
"description": "Proxy server to bypass Cloudflare protection.", "description": "Proxy server to bypass Cloudflare protection.",
"scripts": { "scripts": {
"start": "node ./dist/index.js", "start": "node ./dist/index.js",

View File

@ -2,9 +2,10 @@ import { v1 as UUIDv1 } from 'uuid'
import sessions, { SessionsCacheItem } from './session' import sessions, { SessionsCacheItem } from './session'
import { RequestContext } from './types' import { RequestContext } from './types'
import log from './log' import log from './log'
import { Browser, SetCookie, Request, Page, Headers, HttpMethod, Overrides, Cookie } from 'puppeteer' import { SetCookie, Request, Headers, HttpMethod, Overrides, Cookie } from 'puppeteer'
import { TimeoutError } from 'puppeteer/Errors' import { TimeoutError } from 'puppeteer/Errors'
import getCaptchaSolver, { CaptchaType } from './captcha' import getCaptchaSolver, { CaptchaType } from './captcha'
import * as Puppeteer from "puppeteer-extra/dist/puppeteer";
export interface BaseAPICall { export interface BaseAPICall {
cmd: string cmd: string
@ -70,7 +71,7 @@ type OverridesProps =
const CHALLENGE_SELECTORS = ['#trk_jschal_js', '.ray_id', '.attack-box'] const CHALLENGE_SELECTORS = ['#trk_jschal_js', '.ray_id', '.attack-box']
const TOKEN_INPUT_NAMES = ['g-recaptcha-response', 'h-captcha-response'] const TOKEN_INPUT_NAMES = ['g-recaptcha-response', 'h-captcha-response']
async function interceptResponse(page: Page, callback: (payload: ChallengeResolutionT) => any) { async function interceptResponse(page: Puppeteer.Page, callback: (payload: ChallengeResolutionT) => any) {
const client = await page.target().createCDPSession(); const client = await page.target().createCDPSession();
await client.send('Fetch.enable', { await client.send('Fetch.enable', {
patterns: [ patterns: [
@ -116,7 +117,7 @@ async function interceptResponse(page: Page, callback: (payload: ChallengeResolu
}); });
} }
async function resolveChallenge(ctx: RequestContext, { url, maxTimeout, proxy, download, returnOnlyCookies }: BaseRequestAPICall, page: Page): Promise<ChallengeResolutionT | void> { async function resolveChallenge(ctx: RequestContext, { url, maxTimeout, proxy, download, returnOnlyCookies }: BaseRequestAPICall, page: Puppeteer.Page): Promise<ChallengeResolutionT | void> {
maxTimeout = maxTimeout || 60000 maxTimeout = maxTimeout || 60000
let status = 'ok' let status = 'ok'
@ -319,7 +320,7 @@ function mergeSessionWithParams({ defaults }: SessionsCacheItem, params: BaseReq
return copy return copy
} }
async function setupPage(ctx: RequestContext, params: BaseRequestAPICall, browser: Browser): Promise<Page> { async function setupPage(ctx: RequestContext, params: BaseRequestAPICall, browser: Puppeteer.Browser): Promise<Puppeteer.Page> {
const page = await browser.newPage() const page = await browser.newPage()
// merge session defaults with params // merge session defaults with params

View File

@ -3,10 +3,11 @@ import * as path from 'path'
import * as fs from 'fs' import * as fs from 'fs'
import puppeteer from 'puppeteer-extra' import puppeteer from 'puppeteer-extra'
import { LaunchOptions, Browser, Headers, SetCookie } from 'puppeteer' import { LaunchOptions, Headers, SetCookie } from 'puppeteer'
import log from './log' import log from './log'
import { deleteFolderRecursive, sleep, removeEmptyFields } from './utils' import { deleteFolderRecursive, sleep, removeEmptyFields } from './utils'
import * as Puppeteer from "puppeteer-extra/dist/puppeteer";
interface SessionPageDefaults { interface SessionPageDefaults {
headers?: Headers headers?: Headers
@ -14,7 +15,7 @@ interface SessionPageDefaults {
} }
export interface SessionsCacheItem { export interface SessionsCacheItem {
browser: Browser browser: Puppeteer.Browser
userDataDir?: string userDataDir?: string
defaults: SessionPageDefaults defaults: SessionPageDefaults
} }
@ -77,7 +78,7 @@ export default {
// TODO: sometimes browser instances are created and not connected to correctly. // TODO: sometimes browser instances are created and not connected to correctly.
// how do we handle/quit those instances inside Docker? // how do we handle/quit those instances inside Docker?
let launchTries = 3 let launchTries = 3
let browser; let browser: Puppeteer.Browser;
while (0 <= launchTries--) { while (0 <= launchTries--) {
try { try {
@ -90,7 +91,7 @@ export default {
} }
} }
if (!browser) { throw Error(`Failed to lanch browser 3 times in a row.`) } if (!browser) { throw Error(`Failed to launch browser 3 times in a row.`) }
if (cookies) { if (cookies) {
const page = await browser.newPage() const page = await browser.newPage()
@ -98,7 +99,7 @@ export default {
} }
sessionCache[id] = { sessionCache[id] = {
browser, browser: browser,
userDataDir: puppeteerOptions.userDataDir, userDataDir: puppeteerOptions.userDataDir,
defaults: removeEmptyFields({ defaults: removeEmptyFields({
userAgent, userAgent,