mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2025-06-12 06:17:14 +00:00
Fix max timeout error in some pages
This commit is contained in:
parent
2893f72237
commit
6c598d5360
@ -122,7 +122,8 @@ export async function testWebBrowserInstallation(): Promise<void> {
|
|||||||
oneTimeSession: true
|
oneTimeSession: true
|
||||||
})
|
})
|
||||||
const page = await session.browser.newPage()
|
const page = await session.browser.newPage()
|
||||||
await page.goto(testUrl)
|
const pageTimeout = Number(process.env.BROWSER_TIMEOUT) || 40000
|
||||||
|
await page.goto(testUrl, {waitUntil: 'domcontentloaded', timeout: pageTimeout})
|
||||||
webBrowserUserAgent = await page.evaluate(() => navigator.userAgent)
|
webBrowserUserAgent = await page.evaluate(() => navigator.userAgent)
|
||||||
|
|
||||||
// replace Linux ARM user-agent because it's detected
|
// replace Linux ARM user-agent because it's detected
|
||||||
@ -147,7 +148,7 @@ export async function create(session: string, options: SessionCreateOptions): Pr
|
|||||||
const puppeteerOptions: any = {
|
const puppeteerOptions: any = {
|
||||||
product: 'firefox',
|
product: 'firefox',
|
||||||
headless: process.env.HEADLESS !== 'false',
|
headless: process.env.HEADLESS !== 'false',
|
||||||
timeout: process.env.BROWSER_TIMEOUT || 40000
|
timeout: Number(process.env.BROWSER_TIMEOUT) || 40000
|
||||||
}
|
}
|
||||||
|
|
||||||
puppeteerOptions.extraPrefsFirefox = buildExtraPrefsFirefox(options.proxy)
|
puppeteerOptions.extraPrefsFirefox = buildExtraPrefsFirefox(options.proxy)
|
||||||
|
@ -89,7 +89,11 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
|
|||||||
// is response is ok
|
// is response is ok
|
||||||
// reload the page to be sure we get the real page
|
// reload the page to be sure we get the real page
|
||||||
log.debug("Reloading the page")
|
log.debug("Reloading the page")
|
||||||
response = await gotoPage(params, page);
|
try {
|
||||||
|
response = await gotoPage(params, page);
|
||||||
|
} catch (e) {
|
||||||
|
log.warn("Page not reloaded (do not report!): Cause: " + e.toString())
|
||||||
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
status = "error";
|
status = "error";
|
||||||
@ -129,14 +133,17 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function gotoPage(params: V1Request, page: Page): Promise<HTTPResponse> {
|
async function gotoPage(params: V1Request, page: Page): Promise<HTTPResponse> {
|
||||||
let response: HTTPResponse;
|
let pageTimeout = params.maxTimeout / 3;
|
||||||
if (params.method != 'POST') {
|
let response: HTTPResponse
|
||||||
response = await page.goto(params.url, {waitUntil: 'domcontentloaded'});
|
try {
|
||||||
|
response = await page.goto(params.url, {waitUntil: 'domcontentloaded', timeout: pageTimeout});
|
||||||
|
} catch (e) {
|
||||||
|
// retry
|
||||||
|
response = await page.goto(params.url, {waitUntil: 'domcontentloaded', timeout: 2000});
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
if (params.method == 'POST') {
|
||||||
// post hack
|
// post hack
|
||||||
// first request a page without cloudflare
|
|
||||||
response = await page.goto(params.url, {waitUntil: 'domcontentloaded'});
|
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user