Блокировка видео-запросов на кукловода - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу заблокировать (отменить) все запросы к видеоресурсам, как я могу добиться этого с кукловодом?

Я вижу, что есть пример в документации :

Пример наивного перехватчика запросов, который отменяет все запросы изображений:

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

Но я не могу найти пример того, как блокировать видео.
Только заголовки ответа говорят, что content-type, и я не хочу тратить пропускную способность напрасно.

1 Ответ

1 голос
/ 30 апреля 2019

Отличный вопрос, у меня была такая же проблема. ?

Основная проблема в том, что URL-адреса видео не должны заканчиваться определенным суффиксом, и на самом деле их нет на многих веб-сайтах (например, на YouTube).

Но есть эта функция:

request.resourceType ()

Содержит тип ресурса запроса, как он был воспринят механизмом рендеринга,ResourceType будет одним из следующих: документ, таблица стилей, изображение, мультимедиа, шрифт, скрипт, texttrack, xhr, выборка, источник событий, веб-сокет, манифест, др.

Немного погуглил и нашел это MDN :

media

Ресурсы, загруженные элементом <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();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...