mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2025-06-08 12:35:30 +00:00
Remove userAgent parameter since any modification is detected by CF
This commit is contained in:
parent
3de2e44bfd
commit
78c10d6b24
@ -86,7 +86,6 @@ curl -L -X POST 'http://localhost:8191/v1' \
|
|||||||
--data-raw '{
|
--data-raw '{
|
||||||
"cmd": "request.get",
|
"cmd": "request.get",
|
||||||
"url":"http://www.google.com/",
|
"url":"http://www.google.com/",
|
||||||
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleW...",
|
|
||||||
"maxTimeout": 60000,
|
"maxTimeout": 60000,
|
||||||
"headers": {
|
"headers": {
|
||||||
"X-Test": "Testing 123..."
|
"X-Test": "Testing 123..."
|
||||||
@ -107,7 +106,6 @@ This also speeds up the requests since it won't have to launch a new browser ins
|
|||||||
Parameter | Notes
|
Parameter | Notes
|
||||||
|--|--|
|
|--|--|
|
||||||
session | Optional. The session ID that you want to be assigned to the instance. If isn't set a random UUID will be assigned.
|
session | Optional. The session ID that you want to be assigned to the instance. If isn't set a random UUID will be assigned.
|
||||||
userAgent | Optional. Will be used by the headless browser.
|
|
||||||
|
|
||||||
#### + `sessions.list`
|
#### + `sessions.list`
|
||||||
|
|
||||||
|
@ -46,7 +46,6 @@ async function testChromeInstallation() {
|
|||||||
fs.writeFileSync(filePath, fileContent)
|
fs.writeFileSync(filePath, fileContent)
|
||||||
// launch the browser
|
// launch the browser
|
||||||
const session = await sessions.create(sessionId, {
|
const session = await sessions.create(sessionId, {
|
||||||
userAgent: null,
|
|
||||||
oneTimeSession: true
|
oneTimeSession: true
|
||||||
})
|
})
|
||||||
const page = await session.browser.newPage()
|
const page = await session.browser.newPage()
|
||||||
|
@ -16,7 +16,6 @@ interface BaseSessionsAPICall extends BaseAPICall {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface SessionsCreateAPICall extends BaseSessionsAPICall {
|
interface SessionsCreateAPICall extends BaseSessionsAPICall {
|
||||||
userAgent?: string,
|
|
||||||
cookies?: SetCookie[],
|
cookies?: SetCookie[],
|
||||||
headers?: Headers
|
headers?: Headers
|
||||||
maxTimeout?: number
|
maxTimeout?: number
|
||||||
@ -28,7 +27,7 @@ interface BaseRequestAPICall extends BaseAPICall {
|
|||||||
method?: HttpMethod
|
method?: HttpMethod
|
||||||
postData?: string
|
postData?: string
|
||||||
session?: string
|
session?: string
|
||||||
userAgent?: string
|
userAgent?: string // deprecated, not used
|
||||||
maxTimeout?: number
|
maxTimeout?: number
|
||||||
cookies?: SetCookie[],
|
cookies?: SetCookie[],
|
||||||
headers?: Headers
|
headers?: Headers
|
||||||
@ -68,9 +67,6 @@ type OverridesProps =
|
|||||||
'postData' |
|
'postData' |
|
||||||
'headers'
|
'headers'
|
||||||
|
|
||||||
// We always set a Windows User-Agent because ARM builds are detected by Cloudflare
|
|
||||||
const DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
|
|
||||||
|
|
||||||
async function resolveChallengeWithTimeout(ctx: RequestContext, params: BaseRequestAPICall, page: Page) {
|
async function resolveChallengeWithTimeout(ctx: RequestContext, params: BaseRequestAPICall, page: Page) {
|
||||||
const maxTimeout = params.maxTimeout || 60000
|
const maxTimeout = params.maxTimeout || 60000
|
||||||
const timer = new Timeout();
|
const timer = new Timeout();
|
||||||
@ -164,7 +160,7 @@ async function setupPage(ctx: RequestContext, params: BaseRequestAPICall, browse
|
|||||||
const page = await browser.newPage()
|
const page = await browser.newPage()
|
||||||
|
|
||||||
// merge session defaults with params
|
// merge session defaults with params
|
||||||
const { method, postData, userAgent, headers, cookies } = params
|
const { method, postData, headers, cookies } = params
|
||||||
|
|
||||||
let overrideResolvers: OverrideResolvers = {}
|
let overrideResolvers: OverrideResolvers = {}
|
||||||
|
|
||||||
@ -178,13 +174,6 @@ async function setupPage(ctx: RequestContext, params: BaseRequestAPICall, browse
|
|||||||
overrideResolvers.postData = request => postData
|
overrideResolvers.postData = request => postData
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userAgent) {
|
|
||||||
log.debug(`Using custom UA: ${userAgent}`)
|
|
||||||
await page.setUserAgent(userAgent)
|
|
||||||
} else {
|
|
||||||
await page.setUserAgent(DEFAULT_USER_AGENT)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (headers) {
|
if (headers) {
|
||||||
log.debug(`Adding custom headers: ${JSON.stringify(headers)}`)
|
log.debug(`Adding custom headers: ${JSON.stringify(headers)}`)
|
||||||
overrideResolvers.headers = request => Object.assign(request.headers(), headers)
|
overrideResolvers.headers = request => Object.assign(request.headers(), headers)
|
||||||
@ -235,7 +224,6 @@ const browserRequest = async (ctx: RequestContext, params: BaseRequestAPICall) =
|
|||||||
const sessionId = params.session || UUIDv1()
|
const sessionId = params.session || UUIDv1()
|
||||||
const session = oneTimeSession
|
const session = oneTimeSession
|
||||||
? await sessions.create(sessionId, {
|
? await sessions.create(sessionId, {
|
||||||
userAgent: params.userAgent,
|
|
||||||
oneTimeSession
|
oneTimeSession
|
||||||
})
|
})
|
||||||
: sessions.get(sessionId)
|
: sessions.get(sessionId)
|
||||||
@ -284,6 +272,9 @@ export const routes: Routes = {
|
|||||||
},
|
},
|
||||||
'request.get': async (ctx, params: BaseRequestAPICall) => {
|
'request.get': async (ctx, params: BaseRequestAPICall) => {
|
||||||
params.method = 'GET'
|
params.method = 'GET'
|
||||||
|
if (params.userAgent) {
|
||||||
|
log.warn('Request parameter "userAgent" was removed in FlareSolverr v2.')
|
||||||
|
}
|
||||||
if (params.postData) {
|
if (params.postData) {
|
||||||
return ctx.errorResponse('Cannot use "postBody" when sending a GET request.')
|
return ctx.errorResponse('Cannot use "postBody" when sending a GET request.')
|
||||||
}
|
}
|
||||||
@ -291,11 +282,12 @@ export const routes: Routes = {
|
|||||||
},
|
},
|
||||||
'request.post': async (ctx, params: BaseRequestAPICall) => {
|
'request.post': async (ctx, params: BaseRequestAPICall) => {
|
||||||
params.method = 'POST'
|
params.method = 'POST'
|
||||||
|
if (params.userAgent) {
|
||||||
|
log.warn('Request parameter "userAgent" was removed in FlareSolverr v2.')
|
||||||
|
}
|
||||||
if (!params.postData) {
|
if (!params.postData) {
|
||||||
return ctx.errorResponse('Must send param "postBody" when sending a POST request.')
|
return ctx.errorResponse('Must send param "postBody" when sending a POST request.')
|
||||||
}
|
}
|
||||||
|
|
||||||
await browserRequest(ctx, params)
|
await browserRequest(ctx, params)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ const puppeteer = require('puppeteer');
|
|||||||
|
|
||||||
interface SessionPageDefaults {
|
interface SessionPageDefaults {
|
||||||
headers?: Headers
|
headers?: Headers
|
||||||
userAgent?: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SessionsCacheItem {
|
export interface SessionsCacheItem {
|
||||||
@ -24,7 +23,6 @@ interface SessionsCache {
|
|||||||
|
|
||||||
interface SessionCreateOptions {
|
interface SessionCreateOptions {
|
||||||
oneTimeSession?: boolean
|
oneTimeSession?: boolean
|
||||||
userAgent?: string
|
|
||||||
cookies?: SetCookie[]
|
cookies?: SetCookie[]
|
||||||
headers?: Headers,
|
headers?: Headers,
|
||||||
maxTimeout?: number
|
maxTimeout?: number
|
||||||
@ -49,7 +47,7 @@ function prepareBrowserProfile(id: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
create: async (id: string, { cookies, oneTimeSession, userAgent, headers, maxTimeout, proxy }: SessionCreateOptions): Promise<SessionsCacheItem> => {
|
create: async (id: string, { cookies, oneTimeSession, headers, maxTimeout, proxy }: SessionCreateOptions): Promise<SessionsCacheItem> => {
|
||||||
let args = [
|
let args = [
|
||||||
'--no-sandbox',
|
'--no-sandbox',
|
||||||
'--disable-setuid-sandbox',
|
'--disable-setuid-sandbox',
|
||||||
@ -106,7 +104,6 @@ export default {
|
|||||||
browser: browser,
|
browser: browser,
|
||||||
userDataDir: puppeteerOptions.userDataDir,
|
userDataDir: puppeteerOptions.userDataDir,
|
||||||
defaults: removeEmptyFields({
|
defaults: removeEmptyFields({
|
||||||
userAgent,
|
|
||||||
headers,
|
headers,
|
||||||
maxTimeout
|
maxTimeout
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user