mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2025-06-08 12:35:30 +00:00
Update Puppeter and other dependencies
This commit is contained in:
parent
bb7e82e6c4
commit
fe6cfd75b8
@ -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 `export PUPPETEER_PRODUCT=firefox` (Linux/macOS) or `set PUPPETEER_PRODUCT=firefox` (Windows).
|
||||||
* Run `npm install` command to install FlareSolverr dependencies.
|
* Run `npm install` command to install FlareSolverr dependencies.
|
||||||
* Run `node node_modules/puppeteer/install.js` to install Firefox.
|
* Run `node node_modules/puppeteer/install.js` to install Firefox.
|
||||||
* Run `npm run build` command to compile TypeScript code.
|
* Run `npm start` command to compile TypeScript code and start FlareSolverr.
|
||||||
* Run `npm start` command to start FlareSolverr.
|
|
||||||
|
|
||||||
### Systemd service
|
### Systemd service
|
||||||
|
|
||||||
|
8011
package-lock.json
generated
8011
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
10
package.json
10
package.json
@ -3,7 +3,7 @@
|
|||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"description": "Proxy server to bypass Cloudflare protection.",
|
"description": "Proxy server to bypass Cloudflare protection.",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node ./dist/server.js",
|
"start": "tsc && node ./dist/server.js",
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"dev": "nodemon -e ts --exec ts-node src/server.ts",
|
"dev": "nodemon -e ts --exec ts-node src/server.ts",
|
||||||
"package": "node build-binaries.js",
|
"package": "node build-binaries.js",
|
||||||
@ -23,7 +23,7 @@
|
|||||||
"body-parser": "^1.19.0",
|
"body-parser": "^1.19.0",
|
||||||
"console-log-level": "^1.4.1",
|
"console-log-level": "^1.4.1",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"puppeteer": "^3.3.0",
|
"puppeteer": "^13.1.2",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -31,13 +31,13 @@
|
|||||||
"@types/body-parser": "^1.19.1",
|
"@types/body-parser": "^1.19.1",
|
||||||
"@types/express": "^4.17.13",
|
"@types/express": "^4.17.13",
|
||||||
"@types/jest": "^27.0.2",
|
"@types/jest": "^27.0.2",
|
||||||
"@types/node": "^14.17.27",
|
"@types/node": "^16.11.7",
|
||||||
"@types/puppeteer": "^3.0.6",
|
"@types/puppeteer": "^5.4.4",
|
||||||
"@types/supertest": "^2.0.11",
|
"@types/supertest": "^2.0.11",
|
||||||
"@types/uuid": "^8.3.1",
|
"@types/uuid": "^8.3.1",
|
||||||
"archiver": "^5.3.0",
|
"archiver": "^5.3.0",
|
||||||
"nodemon": "^2.0.13",
|
"nodemon": "^2.0.13",
|
||||||
"pkg": "^5.3.3",
|
"pkg": "^4.4.9",
|
||||||
"supertest": "^6.1.6",
|
"supertest": "^6.1.6",
|
||||||
"ts-jest": "^27.0.7",
|
"ts-jest": "^27.0.7",
|
||||||
"ts-node": "^10.3.0",
|
"ts-node": "^10.3.0",
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// todo: avoid puppeter objects
|
|
||||||
import {SetCookie, Headers, HttpMethod} from 'puppeteer'
|
|
||||||
import {Request, Response} from 'express';
|
import {Request, Response} from 'express';
|
||||||
|
import {Protocol} from "devtools-protocol";
|
||||||
|
|
||||||
import log from '../services/log'
|
import log from '../services/log'
|
||||||
import {browserRequest, ChallengeResolutionResultT, ChallengeResolutionT} from "../services/solver";
|
import {browserRequest, ChallengeResolutionResultT, ChallengeResolutionT} from "../services/solver";
|
||||||
@ -20,11 +19,11 @@ export interface Proxy {
|
|||||||
|
|
||||||
export interface V1RequestBase {
|
export interface V1RequestBase {
|
||||||
cmd: string
|
cmd: string
|
||||||
cookies?: SetCookie[],
|
cookies?: Protocol.Network.CookieParam[],
|
||||||
maxTimeout?: number
|
maxTimeout?: number
|
||||||
proxy?: Proxy
|
proxy?: Proxy
|
||||||
session: string
|
session: string
|
||||||
headers?: Headers // deprecated v2, not used
|
headers?: Record<string, string> // deprecated v2, not used
|
||||||
userAgent?: string // deprecated v2, not used
|
userAgent?: string // deprecated v2, not used
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +32,7 @@ interface V1RequestSession extends V1RequestBase {
|
|||||||
|
|
||||||
export interface V1Request extends V1RequestBase {
|
export interface V1Request extends V1RequestBase {
|
||||||
url: string
|
url: string
|
||||||
method?: HttpMethod
|
method?: string
|
||||||
postData?: string
|
postData?: string
|
||||||
returnOnlyCookies?: boolean
|
returnOnlyCookies?: boolean
|
||||||
download?: boolean // deprecated v2, not used
|
download?: boolean // deprecated v2, not used
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import {Page, Response} from 'puppeteer'
|
import {Page, HTTPResponse} from 'puppeteer'
|
||||||
|
|
||||||
import log from "../services/log";
|
import log from "../services/log";
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ const CHALLENGE_SELECTORS = [
|
|||||||
];
|
];
|
||||||
const CAPTCHA_SELECTORS = ['input[name="cf_captcha_kind"]'];
|
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
|
// look for challenge and return fast if not detected
|
||||||
let cfDetected = response.headers().server && response.headers().server.startsWith('cloudflare');
|
let cfDetected = response.headers().server && response.headers().server.startsWith('cloudflare');
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import {v1 as UUIDv1} from 'uuid'
|
import {v1 as UUIDv1} from 'uuid'
|
||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
import {SetCookie, Browser} from 'puppeteer'
|
import {Browser} from 'puppeteer'
|
||||||
|
import {Protocol} from "devtools-protocol";
|
||||||
|
|
||||||
import log from './log'
|
import log from './log'
|
||||||
import {Proxy} from "../controllers/v1";
|
import {Proxy} from "../controllers/v1";
|
||||||
@ -20,7 +21,7 @@ interface SessionsCache {
|
|||||||
|
|
||||||
export interface SessionCreateOptions {
|
export interface SessionCreateOptions {
|
||||||
oneTimeSession: boolean
|
oneTimeSession: boolean
|
||||||
cookies?: SetCookie[],
|
cookies?: Protocol.Network.CookieParam[],
|
||||||
maxTimeout?: number
|
maxTimeout?: number
|
||||||
proxy?: Proxy
|
proxy?: Proxy
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import {Response, Headers, Page} from 'puppeteer'
|
import {Page, HTTPResponse} from 'puppeteer'
|
||||||
const Timeout = require('await-timeout');
|
const Timeout = require('await-timeout');
|
||||||
|
|
||||||
import log from './log'
|
import log from './log'
|
||||||
@ -11,7 +11,7 @@ const sessions = require('./sessions')
|
|||||||
export interface ChallengeResolutionResultT {
|
export interface ChallengeResolutionResultT {
|
||||||
url: string
|
url: string
|
||||||
status: number,
|
status: number,
|
||||||
headers?: Headers,
|
headers?: Record<string, string>,
|
||||||
response: string,
|
response: string,
|
||||||
cookies: object[]
|
cookies: object[]
|
||||||
userAgent: string
|
userAgent: string
|
||||||
@ -64,7 +64,7 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
|
|||||||
|
|
||||||
// go to the page
|
// go to the page
|
||||||
log.debug(`Navigating to... ${params.url}`)
|
log.debug(`Navigating to... ${params.url}`)
|
||||||
let response: Response = await gotoPage(params, page);
|
let response: HTTPResponse = await gotoPage(params, page);
|
||||||
|
|
||||||
// set cookies
|
// set cookies
|
||||||
if (params.cookies) {
|
if (params.cookies) {
|
||||||
@ -128,8 +128,8 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function gotoPage(params: V1Request, page: Page): Promise<Response> {
|
async function gotoPage(params: V1Request, page: Page): Promise<HTTPResponse> {
|
||||||
let response: Response;
|
let response: HTTPResponse;
|
||||||
if (params.method != 'POST') {
|
if (params.method != 'POST') {
|
||||||
response = await page.goto(params.url, {waitUntil: 'domcontentloaded'});
|
response = await page.goto(params.url, {waitUntil: 'domcontentloaded'});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user