55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
const puppeteer = require('puppeteer-core');
|
|
const chromium = require('chrome-aws-lambda');
|
|
|
|
exports.handler = async (event, context) => {
|
|
let browser = null;
|
|
let result = null;
|
|
let code = 200;
|
|
|
|
try {
|
|
const url = event.queryStringParameters.url;
|
|
|
|
browser = await chromium.puppeteer.launch({
|
|
args: chromium.args,
|
|
defaultViewport: chromium.defaultViewport,
|
|
executablePath: await chromium.executablePath,
|
|
headless: chromium.headless,
|
|
});
|
|
|
|
const page = await browser.newPage();
|
|
|
|
const requests = [];
|
|
|
|
// Capture requests
|
|
page.on('request', request => {
|
|
requests.push({
|
|
url: request.url(),
|
|
method: request.method(),
|
|
headers: request.headers(),
|
|
});
|
|
});
|
|
|
|
await page.goto(url, {
|
|
waitUntil: 'networkidle0', // wait until all requests are finished
|
|
});
|
|
|
|
result = requests;
|
|
|
|
} catch (error) {
|
|
code = 500;
|
|
result = {
|
|
error: 'Failed to create HAR file',
|
|
details: error.toString(),
|
|
};
|
|
} finally {
|
|
if (browser !== null) {
|
|
await browser.close();
|
|
}
|
|
}
|
|
|
|
return {
|
|
statusCode: code,
|
|
body: JSON.stringify(result),
|
|
};
|
|
};
|