Вопрос или проблема
Я использую Firefox 56, потому что это последняя версия, которая все еще позволяет мне использовать мои расширения.
Сегодня Twitter изменил что-то в своем коде, из-за чего видео, опубликованные в Twitter, перестали воспроизводиться в браузере. При попытке воспроизвести видео я получаю сообщение: Медиа не может быть воспроизведено
В веб-консоли я вижу сообщение об ошибке, вроде: Политика безопасности контента: настройки страницы заблокировали загрузку ресурса по адресу blob:https://twitter.com/5970af6d-d6ea-43e1-9bd6-c9d33f08d0a6 (“default-src https://twitter.com”)
Если я полностью отключаю политику безопасности контента в браузере, установив “security.csp.enable” на “false“, то видео воспроизводятся нормально, как и прежде. Также видео воспроизводятся нормально в Firefox 65 без каких-либо изменений.
Я не хочу полностью отключать политику безопасности контента в своем браузере, так как это создаст угрозу безопасности.
Существует ли способ добавить исключение в политику безопасности контента в Firefox 56?
=======================================================
Обновление:
Twitter отправляет следующий заголовок ответа:
content-security-policy: connect-src 'self' blob: https://*.giphy.com https://*.pscp.tv https://*.video.pscp.tv https://*.twimg.com https://api.twitter.com https://caps.twitter.com https://media.riffsy.com https://pay.twitter.com https://sentry.io https://ton.twitter.com https://twitter.com https://upload.twitter.com https://www.google-analytics.com https://vmap.snappytv.com https://vmapstage.snappytv.com https://vmaprel.snappytv.com https://vmap.grabyo.com https://mdhdsnappytv-vh.akamaihd.net https://mpdhdsnappytv-vh.akamaihd.net https://mmdhdsnappytv-vh.akamaihd.net https://smdhdsnappytv-vh.akamaihd.net https://smpdhdsnappytv-vh.akamaihd.net https://smmdhdsnappytv-vh.akamaihd.net https://rmdhdsnappytv-vh.akamaihd.net https://rmpdhdsnappytv-vh.akamaihd.net https://rmmdhdsnappytv-vh.akamaihd.net https://dwo3ckksxlb0v.cloudfront.net ; default-src 'self'; form-action 'self' https://twitter.com https://*.twitter.com; font-src 'self' https://*.twimg.com; frame-src 'self' https://twitter.com https://mobile.twitter.com https://pay.twitter.com https://cards-frame.twitter.com ; img-src 'self' blob: data: https://*.cdn.twitter.com https://ton.twitter.com https://*.twimg.com https://www.google-analytics.com https://www.periscope.tv https://www.pscp.tv https://media.riffsy.com https://*.giphy.com https://*.pscp.tv; manifest-src 'self'; media-src 'self' blob: https://twitter.com https://*.twimg.com https://*.vine.co https://*.pscp.tv https://*.video.pscp.tv https://*.giphy.com https://media.riffsy.com https://mdhdsnappytv-vh.akamaihd.net https://mpdhdsnappytv-vh.akamaihd.net https://mmdhdsnappytv-vh.akamaihd.net https://smdhdsnappytv-vh.akamaihd.net https://smpdhdsnappytv-vh.akamaihd.net https://smmdhdsnappytv-vh.akamaihd.net https://rmdhdsnappytv-vh.akamaihd.net https://rmpdhdsnappytv-vh.akamaihd.net https://rmmdhdsnappytv-vh.akamaihd.net https://dwo3ckksxlb0v.cloudfront.net; object-src 'none'; script-src 'self' 'unsafe-inline' https://*.twimg.com https://www.google-analytics.com https://twitter.com 'nonce-NWNhMmQ5ZjQtYTgwZS00YjVjLTkyODgtNDEzMDMwYWIyOWU2'; style-src 'self' 'unsafe-inline' https://*.twimg.com; worker-src 'self' blob:; report-uri https://twitter.com/i/csp_report?a=O5RXE%3D%3D%3D&ro=false
Существует ли способ удалить (отфильтровать) записи blob из него при загрузке страницы?
Вы можете попробовать использовать расширение браузера, чтобы переопределить заголовок CSP для этого сайта: https://bewisse.com/modheader/
Добавьте фильтр URL-шаблона для сайта Twitter и заголовок ответа ‘content-security-policy’ с более мягкой политикой, такой как “default-src *”, и посмотрите, сработает ли это. Похоже, что ваш браузер неправильно обрабатывает политики, поэтому я не на 100% уверен, как он с этим справится.
.
Ответ или решение
К сожалению, в Firefox 56 нет встроенной возможности изменить политику безопасности контента (Content Security Policy, CSP) для отдельных веб-сайтов напрямую через интерфейс настроек. Однако существует несколько обходных путей, которые вы можете рассмотреть для решения этой проблемы с воспроизведением видео на Twitter.
1. Использование расширений для браузера
Вы можете воспользоваться расширениями для изменения заголовков CSP. Одним из таких расширений является ModHeader. Оно позволяет вам добавлять или изменять заголовки ответа, в том числе CSP, для определённых веб-сайтов.
Шаги по установке и настройке ModHeader:
-
Установите расширение:
- Перейдите по ссылке ModHeader и установите расширение.
-
Настройте фильтрацию URL:
- Откройте расширение и создайте новый фильтр для URL-адреса Twitter (например,
https://twitter.com/*
).
- Откройте расширение и создайте новый фильтр для URL-адреса Twitter (например,
-
Измените заголовок CSP:
- Добавьте заголовок
Content-Security-Policy
с более свободной политикой, например:default-src *; script-src *; img-src *; media-src * blob:;
- Это позволит загружать ресурсы без ограничений по CSP.
- Добавьте заголовок
2. Временное отключение CSP
Если видео воспроизводятся нормально при полном отключении CSP, вы можете временно отключать политику при необходимости:
- В адресной строке введите
about:config
. - Найдите параметр
security.csp.enable
. - Дважды щелкните на параметр, чтобы установить его значение на
false
.
Хотя это позволит вам воспроизводить видео на Twitter, это создает определенные риски безопасности и должно использоваться с осторожностью.
3. Создание пользовательского скрипта
Если вы знакомы с пользовательскими скриптами, вы можете создать скрипт для Greasemonkey или Tampermonkey, который будет изменять заголовки CSP:
// ==UserScript==
// @name Modify CSP for Twitter
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Remove blob from CSP on Twitter
// @author Your Name
// @match https://twitter.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const originalFetch = window.fetch;
window.fetch = function(...args) {
return originalFetch.apply(this, args).then(response => {
if (response.headers.has('Content-Security-Policy')) {
const csp = response.headers.get('Content-Security-Policy').replace(/blob:/g, '');
response.headers.set('Content-Security-Policy', csp);
}
return response;
});
};
})();
Этот скрипт изменяет заголовок CSP, удаляя все вхождения blob:
, что может помочь с проблемой воспроизведения видео.
4. Использование более новой версии браузера
Если возможно, рассмотрите возможность обновления до более новой версии Firefox, например, 65 или выше. В новых версиях браузера реализация CSP более гибкая и может давать вам больше возможностей для решения подобного рода проблем.
Заключение
Изменение политики CSP в конкретных версиях браузеров, таких как Firefox 56, может быть сложной задачей из-за жесткости встроенных механизмов безопасности. Однако, используя расширения, пользовательские скрипты и, возможно, временные решения, вы сможете обойти некоторые ограничения, не снижая значительного уровня безопасности. Рекомендуется помнить о рисках, связанных с изменением безопасности браузера, и действовать осторожно.