Chrome 阻止 puppet 师上的视频请求

tjrkku2a  于 2023-06-27  发布在  Go
关注(0)|答案(1)|浏览(147)

我想阻止(中止)所有对视频资源的请求,我如何使用puppeteer实现它?
我在文档中看到了一个例子:
一个简单的请求拦截器的例子,它中止了所有的图像请求:

page.on('request', interceptedRequest => {
    if (interceptedRequest.url().endsWith('.png') || interceptedRequest.url().endsWith('.jpg'))
      interceptedRequest.abort();
    else
      interceptedRequest.continue();
});

但我似乎找不到一个关于如何阻止视频的例子。
只有响应头显示content-type,我不想浪费带宽。

fnatzsnv

fnatzsnv1#

好问题,我自己也有同样的问题。😉
主要的问题是视频URL不需要以特定的后缀结尾,事实上,在许多网站上(例如YouTube)都没有这样的后缀。
但有这个功能:
request. resourceType()
包含呈现引擎所感知的请求的资源类型。ResourceType将是以下之一:document,stylesheet,image,media,font,script,texttrack,xhr,fetch,eventsource,websocket,manifest,other.
我在Google上搜索了一下,找到了这个MDN

    • 媒体**

<video><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();
    }
});

相关问题