Об этом проекте
js-fair-consent — это open-source решение для управления согласием, разработанное для веб-сайтов, которые хотят уважать конфиденциальность посетителей, при этом имея возможность этично и юридически корректно использовать аналитические и маркетинговые инструменты.
Библиотека предоставляет баннер согласия (полностью настраиваемый через HTML-структуру и CSS), который запрашивает разрешение у посетителей перед загрузкой любых скриптов аналитики. После получения согласия или отказа соответствующие сервисы загружаются асинхронно и неблокирующе, следуя современным практикам производительности веба.
**Поддерживаемые провайдеры аналитики**
- Google Analytics (через gtag.js) с поддержкой Consent Mode v2 (режимы `consent-only` или `preload`)
- Matomo, с использованием его родного API согласия (`requireConsent`, `rememberConsentGiven`, `forgetConsentGiven`)
- Umami, с режимом без предварительной загрузки для предотвращения перерисовок при позднем получении согласия
- Hotjar,conditionally загружается только при предоставлении согласия на маркетинг или персонализацию
**Ключевые возможности**
- Асинхронная отложенная загрузка скриптов — рендеринг страницы никогда не блокируется
- Глобальный контроль конфиденциальности (GPC) и сигнал Do-Not-Track (DNT) автоматически уважаются — при обнаружении одного из них баннер скрывается, а все опциональные инструменты остаются выключенными
- Privacy-by-design по умолчанию: никаких cookie до явного согласия, безопасные атрибуты cookie (`SameSite=Lax`, только HTTPS)
- Опциональное детализированное согласие: посетители могут одобрять или отклонять отдельные категории (аналитика, маркетинг, персонализация) вместо единственного выбора «всё или ничего»
- CSP-safe: поддерживает атрибуты `nonce` и `integrity` для строгих настрой Content Security Policy
- Встроенная i18n: английские и польские переводы поставляются по умолчанию, расширяема для других языков
- Готов к CDN: распространяется напрямую через jsDelivr или GitHub Pages
**Конфигурация**
Библиотека инициализируется через простой объект JavaScript, передаваемый в `ConsentAnalytics.init()`. Пользователи объявляют, какие сервисы они хотят поддерживать, предоставляют свои ID (например, measurement ID GA, website ID Umami, URL и site ID Matomo, project ID и версия Hotjar) и устанавливают параметры, такие как `debug`, `locale` и `granular` согласие. Если детализированное согласие включено, сохраняемый cookie становится объектом JSON, отображающим каждую категорию на её статус одобрения, и каждый сервис проверяет соответствующее значение категории перед загрузкой.
**Публичный API**
Библиотека открывает небольшой набор методов для программистского доступа:
- `ConsentAnalytics.hasConsent()` — возвращает булево значение, указывающее, было ли дано какое-либо согласие
- `ConsentAnalytics.readPrefs()` — возвращает полный объект предпочтений согласия
- `ConsentAnalytics.writePrefs(prefs)` — сохраняет новое состояние предпочтений
- `ConsentAnalytics.revokeConsent()` — очищает сохранённое согласие и показывает баннер снова
- `ConsentAnalytics.trackPageView()` — вручную запускает pageview (полезно для SPA)
Проект лицензирован под MIT и был создан Rafałem Masiarek.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.