Простое расширение для Firefox для добавления в черный список файлов cookie с определенных сайтов / хостов / доменов.

Вопрос или проблема

Я ищу простое расширение для Firefox, которое будет вносить в черный список файлы cookies первого уровня с указанных пользователем сайтов (на самом деле, доменов или хостов).

Firefox использует термин ‘сайт’ немного некорректно, но поскольку это терминология, используемая браузером, мы не будем об этом беспокоиться в этом вопросе. Совершенно приемлемо, если черный список должен быть указан на уровне домена или хоста.

Расширение должно быть способно противостоять очистке настроек сайта пользователем (которые могут быть очищены с помощью Ctrl+Shift+Delete).

Обратите внимание, что Cookie Controller и Cookie Monster в настоящее время не могут удовлетворить это требование.

Стоимость должна быть бесплатной или приблизительно такой, как стоит молочный коктейль. Открытый код предпочтителен, но не обязателен.

Ответ или решение

Краткое введение в тему

В условиях современного онлайн-пространства, безопасность и конфиденциальность пользователей являются приоритетными. Одним из способов достижения контроля над данными является использование расширений браузера для управления cookie-файлами. В этом контексте рассмотрим создание простого расширения для браузера Firefox, позволяющего пользователям блокировать cookie-файлы 1-го уровня с конкретных доменов или хостов.

Cookie-management in Firefox

1. Определение целей расширения

Расширение должно выполнять следующие функции:

  • Блокировать cookie-файлы 1-го уровня с указанных пользователем доменов.
  • Сохранять настройки черного списка cookie, даже после очистки предпочтений сайта (например, при использовании комбинации клавиш Ctrl+Shift+Delete).
  • Обеспечивать доступность (лучше всего, бесплатно) и желательно быть с открытым исходным кодом.

2. Основные технологии и инструменты

Для разработки расширения нам потребуются:

  • JavaScript и WebExtensions API для создания интерфейса и функциональности.
  • HTML/CSS для оформления пользовательского интерфейса.
  • JSON для хранения черного списка.

3. Архитектура расширения

Расширение будет состоять из следующих компонентов:

  • manifest.json: файл манифеста для объявления расширения и его прав.
  • background.js: фоновый скрипт для обработки cookie-файлов.
  • popup.html и popup.js: интерфейс для добавления доменов в черный список и управления ими.

Вот пример структуры файлов:

/cookie-blacklist-extension
|-- manifest.json
|-- background.js
|-- popup.html
|-- popup.js
|-- styles.css

4. Реализация функциональности

Здесь представлена базовая реализация каждого компонента:

manifest.json:

{
  "manifest_version": 3,
  "name": "Cookie Blacklist",
  "version": "1.0",
  "permissions": [
    "cookies",
    "storage",
    "tabs",
    "webRequest",
    "webRequestBlocking",
    "<all_urls>"
  ],
  "background": {
    "service_worker": "background.js"
  },
  "action": {
    "default_popup": "popup.html",
    "default_icon": {
      "16": "icon16.png",
      "48": "icon48.png",
      "128": "icon128.png"
    }
  }
}

background.js:

const blacklist = {};

chrome.runtime.onInstalled.addListener(() => {
    chrome.storage.local.set({blacklist: []});
});

chrome.webRequest.onBeforeSendHeaders.addListener(
    (details) => {
        const url = new URL(details.url);
        if (blacklist[url.hostname]) {
            return { cancel: true };
        }
    },
    { urls: ["<all_urls>"] },
    ["blocking"]
);

chrome.storage.onChanged.addListener((changes, area) => {
    if (area === 'local' && changes.blacklist) {
        blacklist = changes.blacklist.newValue.reduce((acc, domain) => {
            acc[domain] = true;
            return acc;
        }, {});
    }
});

popup.html:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Cookie Blacklist</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <h1>Черный список Cookie</h1>
    <input type="text" id="domain-input" placeholder="Введите домен">
    <button id="add-domain">Добавить</button>
    <ul id="blacklist"></ul>
    <script src="popup.js"></script>
</body>
</html>

popup.js:

document.getElementById('add-domain').addEventListener('click', () => {
    const domain = document.getElementById('domain-input').value;
    if (domain) {
        chrome.storage.local.get('blacklist', (data) => {
            const blacklist = data.blacklist || [];
            if (!blacklist.includes(domain)) {
                blacklist.push(domain);
                chrome.storage.local.set({blacklist});
            }
        });
    }
});

5. Устойчивость к очистке предпочтений

Использование chrome.storage гарантирует, что даже после очистки предпочтений, черный список останется в хранилище расширения. Это ключевой аспект, который обеспечивает долгосрочное блокирование cookie.

Заключение

Создание простого расширения для Firefox для блокировки cookie-файлов с конкретных доменов — это действенный способ повышения конфиденциальности пользователей. Следуя описанным шагам, вы сможете разработать функциональное расширение, соответствующее вышеуказанным требованиям. Данная реализация не только защищает данные пользователей, но и предоставляет простой, дружелюбный интерфейс для управления параметрами конфиденциальности.

В дальнейшем советуем обратить внимание на расширения, которые уже существуют в магазине дополнений Firefox, возможно, среди них уже имеются готовые решения, способные удовлетворить ваши требования. Но если вы стремитесь к кастомизации, создание собственного расширения — идеальный выбор.

Оцените материал
Добавить комментарий

Капча загружается...