【发布时间】:2018-05-21 11:28:19
【问题描述】:
我正在尝试使用 Puppeteer api 获取所有域重定向,在截取最终 URL 的屏幕截图之前保存到一个数组中,但我目前的代码也正在获取其他重定向。
例如,如果我 goto youtube.com,那么我的代码将正确获得重定向 'https://youtube.com/', 'https://www.youtube.com/',,但它也会获得其他重定向,例如 doubleclick.net。
我只想获取会在 URL 栏中发生的重定向。
我已经设法用request.resourceType === 'document' 缩小范围。
如何进一步缩小范围?
代码如下:
// node chrome.js http://youtube.com
const puppeteer = require('puppeteer');
var url = process.argv[2];
(async () => {
const browser = await puppeteer.launch({headless: true, timeout: 30000, ignoreHTTPSErrors: true});
const page = await browser.newPage();
// await page.setRequestInterception(true); // hangs with resourcetype
const urls = [];
page.on('request', request => {
// if (request.resourceType === 'document' || request.resourceType === 'script') {
if (request.resourceType === 'document') {
urls.push(request.url);
request.continue();
}
});
await page.goto(url, {timeout: 20000, waitUntil: 'load'}); //default load
await page.screenshot({path: 'test.jpg', type: 'jpeg', quality: 80, fullPage: false});
console.log(urls);
await browser.close();
})();
【问题讨论】:
标签: javascript node.js headless-browser puppeteer google-chrome-headless