Update Puppeter and other dependencies

This commit is contained in:
ngosang 2022-01-30 22:49:15 +01:00
parent bb7e82e6c4
commit fe6cfd75b8
7 changed files with 3590 additions and 4488 deletions

View File

@ -71,8 +71,7 @@ This is the recommended way for macOS users and for developers.
* Run `export PUPPETEER_PRODUCT=firefox` (Linux/macOS) or `set PUPPETEER_PRODUCT=firefox` (Windows).
* Run `npm install` command to install FlareSolverr dependencies.
* Run `node node_modules/puppeteer/install.js` to install Firefox.
* Run `npm run build` command to compile TypeScript code.
* Run `npm start` command to start FlareSolverr.
* Run `npm start` command to compile TypeScript code and start FlareSolverr.
### Systemd service

8037
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
"version": "2.1.0",
"description": "Proxy server to bypass Cloudflare protection.",
"scripts": {
"start": "node ./dist/server.js",
"start": "tsc && node ./dist/server.js",
"build": "tsc",
"dev": "nodemon -e ts --exec ts-node src/server.ts",
"package": "node build-binaries.js",
@ -23,7 +23,7 @@
"body-parser": "^1.19.0",
"console-log-level": "^1.4.1",
"express": "^4.17.1",
"puppeteer": "^3.3.0",
"puppeteer": "^13.1.2",
"uuid": "^8.3.2"
},
"devDependencies": {
@ -31,13 +31,13 @@
"@types/body-parser": "^1.19.1",
"@types/express": "^4.17.13",
"@types/jest": "^27.0.2",
"@types/node": "^14.17.27",
"@types/puppeteer": "^3.0.6",
"@types/node": "^16.11.7",
"@types/puppeteer": "^5.4.4",
"@types/supertest": "^2.0.11",
"@types/uuid": "^8.3.1",
"archiver": "^5.3.0",
"nodemon": "^2.0.13",
"pkg": "^5.3.3",
"pkg": "^4.4.9",
"supertest": "^6.1.6",
"ts-jest": "^27.0.7",
"ts-node": "^10.3.0",

View File

@ -1,6 +1,5 @@
// todo: avoid puppeter objects
import {SetCookie, Headers, HttpMethod} from 'puppeteer'
import {Request, Response} from 'express';
import {Protocol} from "devtools-protocol";
import log from '../services/log'
import {browserRequest, ChallengeResolutionResultT, ChallengeResolutionT} from "../services/solver";
@ -20,11 +19,11 @@ export interface Proxy {
export interface V1RequestBase {
cmd: string
cookies?: SetCookie[],
cookies?: Protocol.Network.CookieParam[],
maxTimeout?: number
proxy?: Proxy
session: string
headers?: Headers // deprecated v2, not used
headers?: Record<string, string> // deprecated v2, not used
userAgent?: string // deprecated v2, not used
}
@ -33,7 +32,7 @@ interface V1RequestSession extends V1RequestBase {
export interface V1Request extends V1RequestBase {
url: string
method?: HttpMethod
method?: string
postData?: string
returnOnlyCookies?: boolean
download?: boolean // deprecated v2, not used

View File

@ -1,4 +1,4 @@
import {Page, Response} from 'puppeteer'
import {Page, HTTPResponse} from 'puppeteer'
import log from "../services/log";
@ -14,7 +14,7 @@ const CHALLENGE_SELECTORS = [
];
const CAPTCHA_SELECTORS = ['input[name="cf_captcha_kind"]'];
export default async function resolveChallenge(url: string, page: Page, response: Response): Promise<Response> {
export default async function resolveChallenge(url: string, page: Page, response: HTTPResponse): Promise<HTTPResponse> {
// look for challenge and return fast if not detected
let cfDetected = response.headers().server && response.headers().server.startsWith('cloudflare');

View File

@ -1,6 +1,7 @@
import {v1 as UUIDv1} from 'uuid'
import * as path from 'path'
import {SetCookie, Browser} from 'puppeteer'
import {Browser} from 'puppeteer'
import {Protocol} from "devtools-protocol";
import log from './log'
import {Proxy} from "../controllers/v1";
@ -20,7 +21,7 @@ interface SessionsCache {
export interface SessionCreateOptions {
oneTimeSession: boolean
cookies?: SetCookie[],
cookies?: Protocol.Network.CookieParam[],
maxTimeout?: number
proxy?: Proxy
}

View File

@ -1,4 +1,4 @@
import {Response, Headers, Page} from 'puppeteer'
import {Page, HTTPResponse} from 'puppeteer'
const Timeout = require('await-timeout');
import log from './log'
@ -11,7 +11,7 @@ const sessions = require('./sessions')
export interface ChallengeResolutionResultT {
url: string
status: number,
headers?: Headers,
headers?: Record<string, string>,
response: string,
cookies: object[]
userAgent: string
@ -64,7 +64,7 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
// go to the page
log.debug(`Navigating to... ${params.url}`)
let response: Response = await gotoPage(params, page);
let response: HTTPResponse = await gotoPage(params, page);
// set cookies
if (params.cookies) {
@ -128,8 +128,8 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
}
}
async function gotoPage(params: V1Request, page: Page): Promise<Response> {
let response: Response;
async function gotoPage(params: V1Request, page: Page): Promise<HTTPResponse> {
let response: HTTPResponse;
if (params.method != 'POST') {
response = await page.goto(params.url, {waitUntil: 'domcontentloaded'});