Improved error handling in NPM driver with puppeteer

main
Elbert Alias 5 years ago
parent 839fed7bac
commit edbc553b45

@ -46,44 +46,43 @@ class PuppeteerBrowser extends Browser {
} }
async visit(url) { async visit(url) {
const browser = await this.browser(); try {
const browser = await this.browser();
const page = await browser.newPage(); const page = await browser.newPage();
await page.setRequestInterception(true); page.setDefaultTimeout(this.options.maxWait);
page.on('request', request => request.continue()); await page.setRequestInterception(true);
page.on('response', (response) => { page.on('request', request => request.continue());
if (response.status() === 301 || response.status() === 302) {
return;
}
if (!this.statusCode) { page.on('response', (response) => {
this.statusCode = response.status(); if (response.status() === 301 || response.status() === 302) {
return;
}
this.headers = {}; if (!this.statusCode) {
this.statusCode = response.status();
const headers = response.headers(); this.headers = {};
Object.keys(headers).forEach((key) => { const headers = response.headers();
this.headers[key] = Array.isArray(headers[key]) ? headers[key] : [headers[key]];
});
this.contentType = headers['content-type'] || null; Object.keys(headers).forEach((key) => {
} this.headers[key] = Array.isArray(headers[key]) ? headers[key] : [headers[key]];
}); });
page.on('console', ({ _type, _text, _location }) => this.log(`${_text} (${_location.url}: ${_location.lineNumber})`, _type)); this.contentType = headers['content-type'] || null;
}
});
await page.setUserAgent(this.options.userAgent); page.on('console', ({ _type, _text, _location }) => this.log(`${_text} (${_location.url}: ${_location.lineNumber})`, _type));
await page.setUserAgent(this.options.userAgent);
try {
await Promise.race([ await Promise.race([
page.goto(url, { page.goto(url, { waitUntil: 'networkidle2' }),
timeout: this.options.maxWait,
waitUntil: 'networkidle2',
}),
new Promise(resolve => setTimeout(resolve, this.options.maxWait)), new Promise(resolve => setTimeout(resolve, this.options.maxWait)),
]); ]);
@ -117,13 +116,11 @@ class PuppeteerBrowser extends Browser {
})); }));
this.html = await page.content(); this.html = await page.content();
await page.close();
} catch (error) { } catch (error) {
throw new Error(error.toString()); throw new Error(error.toString());
} }
await page.close();
this.page = null;
} }
} }

@ -2,7 +2,7 @@
"name": "wappalyzer", "name": "wappalyzer",
"description": "Uncovers the technologies used on websites", "description": "Uncovers the technologies used on websites",
"homepage": "https://github.com/AliasIO/Wappalyzer", "homepage": "https://github.com/AliasIO/Wappalyzer",
"version": "5.9.5", "version": "5.9.6",
"author": "Elbert Alias", "author": "Elbert Alias",
"license": "GPL-3.0", "license": "GPL-3.0",
"repository": { "repository": {

Loading…
Cancel
Save