乐闻世界logo
搜索文章和话题

Puppeteer 如何阻止跟随重定向

8 个月前提问
6 个月前修改
浏览次数84

1个答案

1

在使用Puppeteer时,如果您想阻止自动跟随重定向,可以通过监听每个请求,并使用request.abort()方法来阻止那些会导致重定向的请求。

下面是一个具体的例子:

javascript
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); // 监听页面请求 await page.setRequestInterception(true); // 开启请求拦截 page.on('request', request => { // 根据需要,判断请求是否为导航请求 // 'document' 类型对应于主文档导航请求 if (request.isNavigationRequest() && request.redirectChain().length) { // 如果是导航请求,并且有重定向链存在,就阻止这个请求 request.abort(); } else { // 其它请求正常继续 request.continue(); } }); // 访问页面 await page.goto('http://example.com'); // 其他操作... await browser.close(); })();

这段代码通过设置page.setRequestInterception(true)来启用请求拦截。当请求发生时,会触发page.on('request', ...)中定义的监听器。在这个监听器中,我们通过request.isNavigationRequest()来检查请求是否为导航请求(即页面跳转),并且通过request.redirectChain().length来判断这个导航请求是否是重定向的一部分。如果是导航且有重定向链,就使用request.abort()方法来阻止请求,从而防止自动跟随重定向。

请注意,阻止重定向可能会导致页面加载不完整或者页面功能异常,因为有些重定向是网站正常功能的一部分。因此,在实际使用中需要根据具体场景谨慎使用该技术。

2024年6月29日 12:07 回复

你的答案