gdo*_*ica 1 javascript google-chrome node.js html5-video puppeteer
我想阻止(中止)对视频资源的所有请求,如何使用 puppeteer 实现它?
我看到文档中有一个例子:
中止所有图像请求的简单请求拦截器示例:
page.on('request', interceptedRequest => {
if (interceptedRequest.url().endsWith('.png') || interceptedRequest.url().endsWith('.jpg'))
interceptedRequest.abort();
else
interceptedRequest.continue();
});
Run Code Online (Sandbox Code Playgroud)
但我似乎找不到有关如何阻止视频的示例。
只有响应标头表示content-type,我不想白白浪费带宽。
很好的问题,我自己也有同样的问题。
主要问题是视频 URL 不必以特定的后缀结尾,实际上它们在许多网站(例如 YouTube)上都没有。
但是有这个功能:
包含渲染引擎所感知的请求资源类型。ResourceType 将是以下之一:文档、样式表、图像、媒体、字体、脚本、texttrack、xhr、fetch、事件源、websocket、清单、其他。
有点谷歌搜索并找到了这个MDN:
媒体
由
<video>or<audio>元素加载的资源 。
而且我也不介意阻止音频请求(感谢上帝,它们不在普通网页中使用......)
最终这就是我最终做的事情:
page.on('request', request => {
const url = request.url().toLowerCase()
const resourceType = request.resourceType()
if (resourceType == 'media' ||
url.endsWith('.mp4') ||
url.endsWith('.avi') ||
url.endsWith('.flv') ||
url.endsWith('.mov') ||
url.endsWith('.wmv')) {
console.log(`ABORTING: video`)
request.abort();
}
else
request.continue();
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |