mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2025-06-10 13:27:13 +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
|
||||
})
|
||||
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)
|
||||
|
||||
// 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 = {
|
||||
product: 'firefox',
|
||||
headless: process.env.HEADLESS !== 'false',
|
||||
timeout: process.env.BROWSER_TIMEOUT || 40000
|
||||
timeout: Number(process.env.BROWSER_TIMEOUT) || 40000
|
||||
}
|
||||
|
||||
puppeteerOptions.extraPrefsFirefox = buildExtraPrefsFirefox(options.proxy)
|
||||
|
@ -89,7 +89,11 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
|
||||
// is response is ok
|
||||
// reload the page to be sure we get the real 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) {
|
||||
status = "error";
|
||||
@ -129,14 +133,17 @@ async function resolveChallenge(params: V1Request, session: SessionsCacheItem):
|
||||
}
|
||||
|
||||
async function gotoPage(params: V1Request, page: Page): Promise<HTTPResponse> {
|
||||
let response: HTTPResponse;
|
||||
if (params.method != 'POST') {
|
||||
response = await page.goto(params.url, {waitUntil: 'domcontentloaded'});
|
||||
let pageTimeout = params.maxTimeout / 3;
|
||||
let response: HTTPResponse
|
||||
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
|
||||
// first request a page without cloudflare
|
||||
response = await page.goto(params.url, {waitUntil: 'domcontentloaded'});
|
||||
await page.setContent(
|
||||
`
|
||||
<!DOCTYPE html>
|
||||
|
Loading…
x
Reference in New Issue
Block a user