|
|
@@ -86,10 +86,7 @@ async function getPageData(browser, page, options) {
|
|
|
if (options.browserDebug) {
|
|
|
await page.waitFor(3000);
|
|
|
}
|
|
|
- await page.goto(options.url, {
|
|
|
- timeout: 0,
|
|
|
- waitUntil: options.browserWaitUntil || NETWORK_IDLE_STATE
|
|
|
- });
|
|
|
+ await pageGoto(page, options);
|
|
|
try {
|
|
|
return await page.evaluate(async options => {
|
|
|
const pageData = await singlefile.lib.getPageData(options);
|
|
|
@@ -115,14 +112,24 @@ async function getPageData(browser, page, options) {
|
|
|
async function handleJSRedirect(browser, options) {
|
|
|
const pages = await browser.pages();
|
|
|
const page = pages[1] || pages[0];
|
|
|
- await page.waitForNavigation(options.url, {
|
|
|
- timeout: 0,
|
|
|
- waitUntil: options.browserWaitUntil || NETWORK_IDLE_STATE
|
|
|
- });
|
|
|
+ await pageGoto(page, options);
|
|
|
const url = page.url();
|
|
|
if (url != options.url) {
|
|
|
options.url = url;
|
|
|
await browser.close();
|
|
|
return exports.getPageData(options);
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+async function pageGoto(page, options) {
|
|
|
+ try {
|
|
|
+ await page.goto(options.url, {
|
|
|
+ timeout: options.browserLoadMaxTime || 0,
|
|
|
+ waitUntil: options.browserWaitUntil || NETWORK_IDLE_STATE
|
|
|
+ });
|
|
|
+ } catch (error) {
|
|
|
+ if (error.name != "TimeoutError") {
|
|
|
+ throw error;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|