refactor(database): improve naming to add exclude_matches to it

This commit is contained in:
wanhose 2024-10-18 16:18:52 +02:00
parent accc5efda8
commit daa805f4f4
10 changed files with 462 additions and 390 deletions

View File

@ -10,7 +10,7 @@
# Cookie Dialog Monster # Cookie Dialog Monster
Cookie Dialog Monster is a browser extension that hides cookie consent dialogs without changing user preferences. By default, we do NOT accept cookies (except in [a few cases](https://git.wanhose.dev/wanhose/cookie-dialog-monster/src/branch/main/database.json#L248) where the pages do not function without accepting them). You can report broken sites with a single click, which will create an issue in this repository to be fixed promptly. Cookie Dialog Monster is a browser extension that hides cookie consent dialogs without changing user preferences. By default, we do NOT accept cookies (except in [a few cases](https://git.wanhose.dev/wanhose/cookie-dialog-monster/src/branch/main/database.json) where the pages do not function without accepting them). You can report broken sites with a single click, which will create an issue in this repository to be fixed promptly.
## Contributing ## Contributing

View File

@ -1,547 +1,257 @@
{ {
"commonWords": [ "actions": [
"ablehnen",
"accept",
"accepta",
"accepter",
"accettare",
"accordo",
"aceitar",
"aceptar",
"acuerdo",
"advertising",
"agree",
"akzeptieren",
"analitica",
"analítica",
"analitice",
"analityka",
"analyse",
"analytics",
"analytique",
"baner",
"banner",
"bannière",
"cc",
"cerrar",
"chiudere",
"close",
"cmp",
"compliance",
"concordar",
"confidențialitate",
"confidentialité",
"configuraciones",
"configurações",
"conformidade",
"conformità",
"conformitate",
"conformité",
"consenso",
"consent",
"consentement",
"consentimento",
"consentimiento",
"consimțământ",
"cookie",
"cumplimiento",
"d'accord",
"dados",
"dane",
"data",
"date",
"daten",
"datenschutz",
"dati",
"datos",
"de acord",
"declinar",
"declinare",
"decline",
"décliner",
"déni",
"descargo de responsabilidad",
"desempenho",
"dialog",
"dialogo",
"diálogo",
"dialogue",
"disclaimer",
"disconoscimento",
"données",
"dritte",
"einstellungen",
"einwilligung",
"fechar",
"fermer",
"fonctionnel",
"funcional",
"functional",
"funcțional",
"funkcjonalny",
"funktional",
"funzionale",
"gdpr",
"gerenciar",
"gérer",
"gesetz",
"gestiona",
"gestionar",
"gestire",
"guardar",
"haftungsausschluss",
"impostazioni",
"închide",
"informação",
"información",
"informacja",
"informații",
"information",
"informazione",
"isenção de responsabilidade",
"konformität",
"konieczny",
"law",
"lege",
"legge",
"lei",
"leistung",
"ley",
"loi",
"manage",
"necesar",
"necesario",
"nécessaire",
"necessario",
"necessário",
"necessary",
"notwendig",
"nutzung",
"odmówić",
"odrzucić",
"opcional",
"opcjonalny",
"optional",
"opțional",
"optionnel",
"opzionale",
"paramètres",
"performance",
"performanță",
"personalisierung",
"personalização",
"personalización",
"personalizacja",
"personalizare",
"personalization",
"personalizzazione",
"personnalisation",
"policy",
"politica",
"politică",
"política",
"politik",
"politique",
"polityka",
"popup",
"präferenzen",
"prawo",
"preferences",
"préférences",
"preferencias",
"preferências",
"preferencje",
"preferenze",
"preferințe",
"prestazioni",
"privacidad",
"privacidade",
"privacy",
"prywatność",
"pubblicità",
"publicidad",
"publicidade",
"publicitate",
"publicité",
"rastreamento",
"rechazar",
"refuza",
"reject",
"rejeitar",
"rejeter",
"reklama",
"rendimiento",
"respinge",
"rifiutare",
"salva",
"salvar",
"salvare",
"sauvegarder",
"save",
"schließen",
"seguimiento",
"setări",
"settings",
"śledzenie",
"speichern",
"strona trzecia",
"suivi",
"terceiro",
"tercero",
"terță parte",
"terza parte",
"third-party",
"tiers",
"tracciamento",
"tracking",
"urmărire",
"usage",
"uso",
"ustawienia",
"utilisation",
"utilizare",
"użycie",
"verfolgung",
"verwalten",
"werbung",
"wydajność",
"zaakceptować",
"zamknij",
"zapisz",
"zarządzać",
"zgoda",
"zgodność",
"zgodzić się",
"zrzeczenie się",
"zustimmen",
"аналитика",
"баннер",
"всплывающее окно",
"данные",
"диалог",
"закон",
"закрыть",
"информация",
"использование",
"конфиденциальность",
"настройки",
"необходимо",
"опционально",
"отказ",
"отказаться",
"отклонить",
"отслеживание",
"персонализация",
"политика",
"предпочтения",
"принять",
"производительность",
"реклама",
"согласен",
"согласие",
"соответствие",
"сохранить",
"третья сторона",
"управлять",
"функциональный"
],
"fixes": [
{ {
"action": "click",
"domain": "action.com", "domain": "action.com",
"name": "click",
"selector": "#CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll" "selector": "#CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll"
}, },
{ {
"action": "resetAll",
"domain": "automobielmanagement.nl", "domain": "automobielmanagement.nl",
"name": "resetAll",
"property": "filter", "property": "filter",
"selector": "body > *" "selector": "body > *"
}, },
{ {
"action": "click",
"domain": "bilbaomuseoa.eus", "domain": "bilbaomuseoa.eus",
"name": "click",
"selector": ".alert_message .btn-confirm" "selector": ".alert_message .btn-confirm"
}, },
{ {
"action": "resetAll",
"domain": "breitbart.com", "domain": "breitbart.com",
"name": "resetAll",
"property": "display", "property": "display",
"selector": ".twitter-tweet" "selector": ".twitter-tweet"
}, },
{ {
"action": "resetAll",
"domain": "breitbart.com", "domain": "breitbart.com",
"name": "resetAll",
"property": "visibility", "property": "visibility",
"selector": ".twitter-tweet" "selector": ".twitter-tweet"
}, },
{ {
"action": "click",
"domain": "buscotelefonosgratis.es", "domain": "buscotelefonosgratis.es",
"name": "click",
"selector": "#cookie_action_close_header_reject" "selector": "#cookie_action_close_header_reject"
}, },
{ {
"action": "click",
"domain": "chollometro.com", "domain": "chollometro.com",
"name": "click",
"selector": "[data-t=\"continueWithoutAccepting\"]" "selector": "[data-t=\"continueWithoutAccepting\"]"
}, },
{ {
"action": "click",
"domain": "classicube.net", "domain": "classicube.net",
"name": "click",
"selector": "#acceptcookies" "selector": "#acceptcookies"
}, },
{ {
"action": "click",
"domain": "compact-online.de", "domain": "compact-online.de",
"name": "click",
"selector": "[id*=\"bnnr-body-rightSide-\"] div + div > span" "selector": "[id*=\"bnnr-body-rightSide-\"] div + div > span"
}, },
{ {
"action": "click",
"domain": "consent.google", "domain": "consent.google",
"name": "click",
"selector": "[aria-label=\"Alle ablehnen\"], [aria-label=\"Odrzuć wszystko\"], [aria-label=\"Rechazar todo\"], [aria-label=\"Recusar tudo\"], [aria-label=\"Reject all\"], [aria-label=\"Rejeitar tudo\"], [aria-label=\"Respinge tot\"], [aria-label=\"Rifiuta tutto\"], [aria-label=\"Tout refuser\"], [aria-label=\"Отклонить все\"]" "selector": "[aria-label=\"Alle ablehnen\"], [aria-label=\"Odrzuć wszystko\"], [aria-label=\"Rechazar todo\"], [aria-label=\"Recusar tudo\"], [aria-label=\"Reject all\"], [aria-label=\"Rejeitar tudo\"], [aria-label=\"Respinge tot\"], [aria-label=\"Rifiuta tutto\"], [aria-label=\"Tout refuser\"], [aria-label=\"Отклонить все\"]"
}, },
{ {
"action": "click",
"domain": "consent.yahoo", "domain": "consent.yahoo",
"name": "click",
"selector": ".reject-all" "selector": ".reject-all"
}, },
{ {
"action": "click",
"domain": "consent.youtube", "domain": "consent.youtube",
"name": "click",
"selector": "[aria-label=\"Alle ablehnen\"], [aria-label=\"Odrzuć wszystko\"], [aria-label=\"Rechazar todo\"], [aria-label=\"Recusar tudo\"], [aria-label=\"Reject all\"], [aria-label=\"Rejeitar tudo\"], [aria-label=\"Respinge tot\"], [aria-label=\"Rifiuta tutto\"], [aria-label=\"Tout refuser\"], [aria-label=\"Отклонить все\"]" "selector": "[aria-label=\"Alle ablehnen\"], [aria-label=\"Odrzuć wszystko\"], [aria-label=\"Rechazar todo\"], [aria-label=\"Recusar tudo\"], [aria-label=\"Reject all\"], [aria-label=\"Rejeitar tudo\"], [aria-label=\"Respinge tot\"], [aria-label=\"Rifiuta tutto\"], [aria-label=\"Tout refuser\"], [aria-label=\"Отклонить все\"]"
}, },
{ {
"action": "click",
"domain": "dailymotion.com", "domain": "dailymotion.com",
"name": "click",
"selector": "[aria-label=\"Continue without accepting\"]" "selector": "[aria-label=\"Continue without accepting\"]"
}, },
{ {
"action": "click",
"domain": "dealabs.com", "domain": "dealabs.com",
"name": "click",
"selector": "[data-t=\"continueWithoutAccepting\"]" "selector": "[data-t=\"continueWithoutAccepting\"]"
}, },
{ {
"action": "click",
"domain": "derstandard", "domain": "derstandard",
"name": "click",
"selector": "[aria-label=\"Einverstanden\"]" "selector": "[aria-label=\"Einverstanden\"]"
}, },
{ {
"action": "click",
"domain": "fiberplane.dev", "domain": "fiberplane.dev",
"name": "click",
"selector": "button[aria-label=\"Close Banner\"]" "selector": "button[aria-label=\"Close Banner\"]"
}, },
{ {
"action": "click",
"domain": "foto-erhardt.de", "domain": "foto-erhardt.de",
"name": "click",
"selector": "[class=\"modal show\"]" "selector": "[class=\"modal show\"]"
}, },
{ {
"action": "reset",
"domain": "gamestar.de", "domain": "gamestar.de",
"name": "reset",
"property": "filter", "property": "filter",
"selector": "#content" "selector": "#content"
}, },
{ {
"action": "click",
"domain": "gettr.com", "domain": "gettr.com",
"name": "click",
"selector": "button.bold" "selector": "button.bold"
}, },
{ {
"action": "click",
"domain": "gib-uns-deinen-gebrauchten.de", "domain": "gib-uns-deinen-gebrauchten.de",
"name": "click",
"selector": "#cookie-banner-accept-selected-button" "selector": "#cookie-banner-accept-selected-button"
}, },
{ {
"action": "click",
"domain": "gmx.com", "domain": "gmx.com",
"name": "click",
"selector": "#onetrust-accept-btn-handler" "selector": "#onetrust-accept-btn-handler"
}, },
{ {
"action": "click",
"domain": "gmx.net", "domain": "gmx.net",
"name": "click",
"selector": "[data-id=\"save-all-pur\"]" "selector": "[data-id=\"save-all-pur\"]"
}, },
{ {
"action": "click",
"domain": "golem.de", "domain": "golem.de",
"name": "click",
"selector": "[title=\"Zustimmen und weiter\"]" "selector": "[title=\"Zustimmen und weiter\"]"
}, },
{ {
"action": "click",
"domain": "google", "domain": "google",
"name": "click",
"selector": "[aria-modal=\"true\"][role=\"dialog\"]:has([href*=\"policies.google.com/technologies/cookies\"]) button:not([aria-label]):not([role=\"link\"])" "selector": "[aria-modal=\"true\"][role=\"dialog\"]:has([href*=\"policies.google.com/technologies/cookies\"]) button:not([aria-label]):not([role=\"link\"])"
}, },
{ {
"action": "click",
"domain": "hagglezon.com", "domain": "hagglezon.com",
"name": "click",
"selector": "[data-test=\"cookie-submit\"]" "selector": "[data-test=\"cookie-submit\"]"
}, },
{ {
"action": "click",
"domain": "instagram.com", "domain": "instagram.com",
"name": "click",
"selector": "[role=\"dialog\"] > [style=\"display: flex; flex-direction: column; height: 100%; max-width: 100%;\"] > button" "selector": "[role=\"dialog\"] > [style=\"display: flex; flex-direction: column; height: 100%; max-width: 100%;\"] > button"
}, },
{ {
"action": "click",
"domain": "motorolasound.com", "domain": "motorolasound.com",
"name": "click",
"selector": "#cookie-btn-denied" "selector": "#cookie-btn-denied"
}, },
{ {
"action": "click",
"domain": "mydealz.de", "domain": "mydealz.de",
"name": "click",
"selector": "[data-t=\"continueWithoutAccepting\"]" "selector": "[data-t=\"continueWithoutAccepting\"]"
}, },
{ {
"action": "reload", "domain": "myprivacy.dpgmedia",
"domain": "myprivacy.dpgmedia" "name": "reload"
}, },
{ {
"action": "click",
"domain": "off-campers.com", "domain": "off-campers.com",
"name": "click",
"selector": "[form=\"cookie-consent-form\"][value=\"deny\"]" "selector": "[form=\"cookie-consent-form\"][value=\"deny\"]"
}, },
{ {
"action": "reset",
"domain": "orcd.co", "domain": "orcd.co",
"name": "reset",
"property": "opacity", "property": "opacity",
"selector": ".player-container.box-shadow" "selector": ".player-container.box-shadow"
}, },
{ {
"action": "resetAll",
"domain": ".pl", "domain": ".pl",
"name": "resetAll",
"property": "filter", "property": "filter",
"selector": "body:has(.advertisement.contentAds.ads.adsbygoogle.top-banners.adbanner.bannerAd.ad-google.AdSense:first-child) > *" "selector": "body:has(.advertisement.contentAds.ads.adsbygoogle.top-banners.adbanner.bannerAd.ad-google.AdSense:first-child) > *"
}, },
{ {
"action": "reset",
"domain": "play.google", "domain": "play.google",
"name": "reset",
"property": "z-index", "property": "z-index",
"selector": "body > div" "selector": "body > div"
}, },
{ {
"action": "click",
"domain": "popeyes.es", "domain": "popeyes.es",
"name": "click",
"selector": ".cookie-buttons > .cookie-buttons-column > div:last-child" "selector": ".cookie-buttons > .cookie-buttons-column > div:last-child"
}, },
{ {
"action": "click",
"domain": "producthunt.com", "domain": "producthunt.com",
"name": "click",
"selector": "[data-test=\"dismiss-CookiePopup\"] button" "selector": "[data-test=\"dismiss-CookiePopup\"] button"
}, },
{ {
"action": "click",
"domain": "reddit.com", "domain": "reddit.com",
"name": "click",
"selector": "#SHORTCUT_FOCUSABLE_DIV [style*=\"--Toaster\"] section:last-child section:last-child button" "selector": "#SHORTCUT_FOCUSABLE_DIV [style*=\"--Toaster\"] section:last-child section:last-child button"
}, },
{ {
"action": "reset",
"domain": "resonanz-labor.de", "domain": "resonanz-labor.de",
"name": "reset",
"property": "overflow", "property": "overflow",
"selector": "#wrapwrap" "selector": "#wrapwrap"
}, },
{ {
"action": "click",
"domain": "staylibere.com", "domain": "staylibere.com",
"name": "click",
"selector": "[class*=\"LayoutCookieBanner_buttons\"] > button:last-child" "selector": "[class*=\"LayoutCookieBanner_buttons\"] > button:last-child"
}, },
{ {
"action": "reset",
"domain": "thetvdb.com", "domain": "thetvdb.com",
"name": "reset",
"property": "overflow", "property": "overflow",
"selector": "body" "selector": "body"
}, },
{ {
"action": "click",
"domain": "twitch.tv", "domain": "twitch.tv",
"name": "click",
"selector": "[data-a-target=\"consent-banner-accept\"]" "selector": "[data-a-target=\"consent-banner-accept\"]"
}, },
{ {
"action": "click",
"domain": "usnews.com", "domain": "usnews.com",
"name": "click",
"selector": "#gdpr-modal-agree" "selector": "#gdpr-modal-agree"
}, },
{ {
"action": "click",
"domain": "web.de", "domain": "web.de",
"name": "click",
"selector": "#reminder" "selector": "#reminder"
}, },
{ {
"action": "click",
"domain": "web.dev", "domain": "web.dev",
"name": "click",
"selector": "a[href*=\"cookies\"] + button" "selector": "a[href*=\"cookies\"] + button"
}, },
{ {
"action": "click",
"domain": "youtube.com", "domain": "youtube.com",
"name": "click",
"selector": "[aria-label*=\"ablehnen\"], [aria-label*=\"Reject\"], [aria-label*=\"Rechazar\"], [aria-label*=\"refuser\"], [aria-label*=\"Rifiuta\"], [aria-label*=\"Nie wyrażaj zgody\"], [aria-label*=\"Rejeitar\"], [aria-label*=\"Recusar\"], [aria-label*=\"Resping\"], [aria-label*=\"Запретить\"]" "selector": "[aria-label*=\"ablehnen\"], [aria-label*=\"Reject\"], [aria-label*=\"Rechazar\"], [aria-label*=\"refuser\"], [aria-label*=\"Rifiuta\"], [aria-label*=\"Nie wyrażaj zgody\"], [aria-label*=\"Rejeitar\"], [aria-label*=\"Recusar\"], [aria-label*=\"Resping\"], [aria-label*=\"Запретить\"]"
}, },
{ {
"action": "click",
"domain": "zdf.de", "domain": "zdf.de",
"name": "click",
"selector": "#aria-dialog-cmp-error-dialog > .dialog-close" "selector": "#aria-dialog-cmp-error-dialog > .dialog-close"
}, },
{ {
"action": "click",
"domain": "zeit.de", "domain": "zeit.de",
"name": "click",
"selector": "[title=\"ACCEPT AND CONTINUE\"]" "selector": "[title=\"ACCEPT AND CONTINUE\"]"
} }
], ],
"rules": [ "exclusions": {
"||app.usercentrics.eu^",
"||b2brouter.net/de/wp-content/plugins/cookies-and-content-security-policy^",
"||benno-gymnasium.de/plugins/system/gdpr^",
"||c.evidon.com^",
"||cdn-cookieyes.com^",
"||cdn.consentmanager.net^",
"||cdn.cookielaw.org^",
"||cdn.optable.co^",
"||cdn.trustcommander.net/privacy^",
"||cdntranscend.eventbrite.com^",
"||chollometro.com/assets/js/CookiesMessage*.js^",
"||city-bahn.de/wp-content/plugins/borlabs-cookie^",
"||cmp.huffingtonpost.fr^",
"||cmp.inmobi.com^",
"||cmp.prisa.com^",
"||cmp.uniconsent.com^",
"||cms.static-bahn.de/cms/consent-layer^",
"||consent.cookiebot.com^",
"||consent.cookiefirst.com^",
"||consent.pdf24.org^",
"||consent.trustarc.com^",
"||consent.up.welt.de^",
"||consentbar.interencheres.com^",
"||consentcdn.cookiebot.com^",
"||cookiehub.net^",
"||cp.as.com^",
"||cp.inside-digital.de^",
"||download.amd.com/OneTrust^",
"||driftingchef.com/static/*/Sticky2,ConsentManager",
"||emp.bbci.co.uk^",
"||eu.fastcmp.com^",
"||forum.vorondesign.com/js/xf/notice.min.js^",
"||gdpr-tcfv2.sp-prod.net^",
"||get.optad360.io/sf/*/plugin.min.js",
"||ilims.de/typo3conf/ext/nb_cookie_banner^",
"||itkadmin.de/_javascripts/cookiesolution/es_cookie_solution_sources_v2.js^",
"||js.vxcdn.com/usercentrics-sdk^",
"||lensois.com/wp-admin/admin-ajax.php",
"||media.bzcompany.cz/scookies^",
"||myprivacy-static.dpgmedia.net/consent.js^",
"||myprivacy.dpgmedia.*/consent^",
"||optanon.blob.core.windows.net^",
"||privacy.wetransfer.com/fides.js^",
"||prod.widgets.burgerprofiel.vlaanderen.be/*/js.cookie.js^",
"||redditstatic.com/onetrust.*.js",
"||s.nitropay.com/gpp-*.min.js",
"||s.p7s1.io/cmp^",
"||sdk.privacy-center.org^",
"||static.fastcmp.com^",
"||transcend-cdn.com^",
"||wcpstatic.microsoft.com^",
"||webtools.europa.eu/js/webtools.cck.js^",
"||widgets.marketcat.net^"
],
"skips": {
"domains": [ "domains": [
"*.bauhaus.cz",
"*.codesandbox.io",
"*.cookie-dialog-monster.com",
"*.facebook.com",
"*.googleapis.com",
"*.olympics.com",
"translate.google.*",
"www.youtube-nocookie.com",
"www.youtube.com"
],
"overflows": [
"app.diagrams.net", "app.diagrams.net",
"blog.sapegin.me", "blog.sapegin.me",
"buyagift.co.uk", "buyagift.co.uk",
@ -964,6 +674,307 @@
"YTD-YOODLE-RENDERER" "YTD-YOODLE-RENDERER"
] ]
}, },
"keywords": [
"ablehnen",
"accept",
"accepta",
"accepter",
"accettare",
"accordo",
"aceitar",
"aceptar",
"acuerdo",
"advertising",
"agree",
"akzeptieren",
"analitica",
"analítica",
"analitice",
"analityka",
"analyse",
"analytics",
"analytique",
"baner",
"banner",
"bannière",
"cc",
"cerrar",
"chiudere",
"close",
"cmp",
"compliance",
"concordar",
"confidențialitate",
"confidentialité",
"configuraciones",
"configurações",
"conformidade",
"conformità",
"conformitate",
"conformité",
"consenso",
"consent",
"consentement",
"consentimento",
"consentimiento",
"consimțământ",
"cookie",
"cumplimiento",
"d'accord",
"dados",
"dane",
"data",
"date",
"daten",
"datenschutz",
"dati",
"datos",
"de acord",
"declinar",
"declinare",
"decline",
"décliner",
"déni",
"descargo de responsabilidad",
"desempenho",
"dialog",
"dialogo",
"diálogo",
"dialogue",
"disclaimer",
"disconoscimento",
"données",
"dritte",
"einstellungen",
"einwilligung",
"fechar",
"fermer",
"fonctionnel",
"funcional",
"functional",
"funcțional",
"funkcjonalny",
"funktional",
"funzionale",
"gdpr",
"gerenciar",
"gérer",
"gesetz",
"gestiona",
"gestionar",
"gestire",
"guardar",
"haftungsausschluss",
"impostazioni",
"închide",
"informação",
"información",
"informacja",
"informații",
"information",
"informazione",
"isenção de responsabilidade",
"konformität",
"konieczny",
"law",
"lege",
"legge",
"lei",
"leistung",
"ley",
"loi",
"manage",
"necesar",
"necesario",
"nécessaire",
"necessario",
"necessário",
"necessary",
"notwendig",
"nutzung",
"odmówić",
"odrzucić",
"opcional",
"opcjonalny",
"optional",
"opțional",
"optionnel",
"opzionale",
"paramètres",
"performance",
"performanță",
"personalisierung",
"personalização",
"personalización",
"personalizacja",
"personalizare",
"personalization",
"personalizzazione",
"personnalisation",
"policy",
"politica",
"politică",
"política",
"politik",
"politique",
"polityka",
"popup",
"präferenzen",
"prawo",
"preferences",
"préférences",
"preferencias",
"preferências",
"preferencje",
"preferenze",
"preferințe",
"prestazioni",
"privacidad",
"privacidade",
"privacy",
"prywatność",
"pubblicità",
"publicidad",
"publicidade",
"publicitate",
"publicité",
"rastreamento",
"rechazar",
"refuza",
"reject",
"rejeitar",
"rejeter",
"reklama",
"rendimiento",
"respinge",
"rifiutare",
"salva",
"salvar",
"salvare",
"sauvegarder",
"save",
"schließen",
"seguimiento",
"setări",
"settings",
"śledzenie",
"speichern",
"strona trzecia",
"suivi",
"terceiro",
"tercero",
"terță parte",
"terza parte",
"third-party",
"tiers",
"tracciamento",
"tracking",
"urmărire",
"usage",
"uso",
"ustawienia",
"utilisation",
"utilizare",
"użycie",
"verfolgung",
"verwalten",
"werbung",
"wydajność",
"zaakceptować",
"zamknij",
"zapisz",
"zarządzać",
"zgoda",
"zgodność",
"zgodzić się",
"zrzeczenie się",
"zustimmen",
"аналитика",
"баннер",
"всплывающее окно",
"данные",
"диалог",
"закон",
"закрыть",
"информация",
"использование",
"конфиденциальность",
"настройки",
"необходимо",
"опционально",
"отказ",
"отказаться",
"отклонить",
"отслеживание",
"персонализация",
"политика",
"предпочтения",
"принять",
"производительность",
"реклама",
"согласен",
"согласие",
"соответствие",
"сохранить",
"третья сторона",
"управлять",
"функциональный"
],
"rules": [
"||app.usercentrics.eu^",
"||b2brouter.net/de/wp-content/plugins/cookies-and-content-security-policy^",
"||benno-gymnasium.de/plugins/system/gdpr^",
"||c.evidon.com^",
"||cdn-cookieyes.com^",
"||cdn.consentmanager.net^",
"||cdn.cookielaw.org^",
"||cdn.optable.co^",
"||cdn.trustcommander.net/privacy^",
"||cdntranscend.eventbrite.com^",
"||chollometro.com/assets/js/CookiesMessage*.js^",
"||city-bahn.de/wp-content/plugins/borlabs-cookie^",
"||cmp.huffingtonpost.fr^",
"||cmp.inmobi.com^",
"||cmp.prisa.com^",
"||cmp.uniconsent.com^",
"||cms.static-bahn.de/cms/consent-layer^",
"||consent.cookiebot.com^",
"||consent.cookiefirst.com^",
"||consent.pdf24.org^",
"||consent.trustarc.com^",
"||consent.up.welt.de^",
"||consentbar.interencheres.com^",
"||consentcdn.cookiebot.com^",
"||cookiehub.net^",
"||cp.as.com^",
"||cp.inside-digital.de^",
"||download.amd.com/OneTrust^",
"||driftingchef.com/static/*/Sticky2,ConsentManager",
"||emp.bbci.co.uk^",
"||eu.fastcmp.com^",
"||forum.vorondesign.com/js/xf/notice.min.js^",
"||gdpr-tcfv2.sp-prod.net^",
"||get.optad360.io/sf/*/plugin.min.js",
"||ilims.de/typo3conf/ext/nb_cookie_banner^",
"||itkadmin.de/_javascripts/cookiesolution/es_cookie_solution_sources_v2.js^",
"||js.vxcdn.com/usercentrics-sdk^",
"||lensois.com/wp-admin/admin-ajax.php",
"||media.bzcompany.cz/scookies^",
"||myprivacy-static.dpgmedia.net/consent.js^",
"||myprivacy.dpgmedia.*/consent^",
"||optanon.blob.core.windows.net^",
"||privacy.wetransfer.com/fides.js^",
"||prod.widgets.burgerprofiel.vlaanderen.be/*/js.cookie.js^",
"||redditstatic.com/onetrust.*.js",
"||s.nitropay.com/gpp-*.min.js",
"||s.p7s1.io/cmp^",
"||sdk.privacy-center.org^",
"||static.fastcmp.com^",
"||transcend-cdn.com^",
"||wcpstatic.microsoft.com^",
"||webtools.europa.eu/js/webtools.cck.js^",
"||widgets.marketcat.net^"
],
"tokens": { "tokens": {
"backdrops": [ "backdrops": [
".cc-policy-overlay", ".cc-policy-overlay",
@ -13997,5 +14008,5 @@
"ytm-consent-bump-v2-renderer" "ytm-consent-bump-v2-renderer"
] ]
}, },
"version": "1728300083309" "version": "1729252494919"
} }

View File

@ -12,6 +12,9 @@ import v4ReportRoutes from 'routes/v4/report';
import v5DataRoutes from 'routes/v5/data'; import v5DataRoutes from 'routes/v5/data';
import v5IssuesRoutes from 'routes/v5/issues'; import v5IssuesRoutes from 'routes/v5/issues';
import v5ReportRoutes from 'routes/v5/report'; import v5ReportRoutes from 'routes/v5/report';
import v6DataRoutes from 'routes/v6/data';
import v6IssuesRoutes from 'routes/v6/issues';
import v6ReportRoutes from 'routes/v6/report';
import environment from 'services/environment'; import environment from 'services/environment';
const server = fastify({ logger: true }); const server = fastify({ logger: true });
@ -39,6 +42,9 @@ server.register(v4ReportRoutes, { prefix: '/rest/v4' });
server.register(v5DataRoutes, { prefix: '/rest/v5' }); server.register(v5DataRoutes, { prefix: '/rest/v5' });
server.register(v5IssuesRoutes, { prefix: '/rest/v5' }); server.register(v5IssuesRoutes, { prefix: '/rest/v5' });
server.register(v5ReportRoutes, { prefix: '/rest/v5' }); server.register(v5ReportRoutes, { prefix: '/rest/v5' });
server.register(v6DataRoutes, { prefix: '/rest/v6' });
server.register(v6IssuesRoutes, { prefix: '/rest/v6' });
server.register(v6ReportRoutes, { prefix: '/rest/v6' });
server.listen({ host: '0.0.0.0', port: environment.port }, (error, address) => { server.listen({ host: '0.0.0.0', port: environment.port }, (error, address) => {
if (error) { if (error) {

View File

@ -1,6 +1,6 @@
import { FastifyInstance, RouteShorthandOptions } from 'fastify'; import { FastifyInstance, RouteShorthandOptions } from 'fastify';
import fetch from 'node-fetch'; import fetch from 'node-fetch';
import { parseNewFix } from 'services/compatibility'; import { parseAction } from 'services/compatibility';
import environment from 'services/environment'; import environment from 'services/environment';
import { RATE_LIMIT_10_PER_MIN } from 'services/rateLimit'; import { RATE_LIMIT_10_PER_MIN } from 'services/rateLimit';
@ -14,17 +14,18 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
}, },
async (_request, reply) => { async (_request, reply) => {
try { try {
const url = `${environment.gitea.raw}/database.json`; const database = `${environment.gitea.raw}/database.json`;
const result = await (await fetch(url)).json(); const response = await fetch(database);
const { actions, exclusions, keywords, tokens } = await response.json();
reply.send({ reply.send({
data: { data: {
classes: result.tokens.classes, classes: tokens.classes,
commonWords: result.commonWords, commonWords: keywords,
elements: result.tokens.selectors, elements: tokens.selectors,
fixes: result.fixes.map(parseNewFix), fixes: actions.map(parseAction),
skips: result.skips.domains, skips: exclusions.overflows,
tags: result.skips.tags, tags: exclusions.tags,
}, },
success: true, success: true,
}); });

View File

@ -1,6 +1,6 @@
import { FastifyInstance, RouteShorthandOptions } from 'fastify'; import { FastifyInstance, RouteShorthandOptions } from 'fastify';
import fetch from 'node-fetch'; import fetch from 'node-fetch';
import { parseNewFix } from 'services/compatibility'; import { parseAction } from 'services/compatibility';
import environment from 'services/environment'; import environment from 'services/environment';
import { RATE_LIMIT_3_PER_MIN } from 'services/rateLimit'; import { RATE_LIMIT_3_PER_MIN } from 'services/rateLimit';
@ -14,13 +14,16 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
}, },
async (_request, reply) => { async (_request, reply) => {
try { try {
const url = `${environment.gitea.raw}/database.json`; const database = `${environment.gitea.raw}/database.json`;
const result = await (await fetch(url)).json(); const response = await fetch(database);
const { actions, exclusions, keywords, ...rest } = await response.json();
reply.send({ reply.send({
data: { data: {
...result, ...rest,
fixes: result.fixes.map(parseNewFix), commonWords: keywords,
fixes: actions.map(parseAction),
skips: { domains: exclusions.overflows, tags: exclusions.tags },
}, },
success: true, success: true,
}); });

View File

@ -1,5 +1,6 @@
import { FastifyInstance, RouteShorthandOptions } from 'fastify'; import { FastifyInstance, RouteShorthandOptions } from 'fastify';
import fetch from 'node-fetch'; import fetch from 'node-fetch';
import { parseActionName, toDeclarativeNetRequestRule } from 'services/compatibility';
import environment from 'services/environment'; import environment from 'services/environment';
import { RATE_LIMIT_3_PER_MIN } from 'services/rateLimit'; import { RATE_LIMIT_3_PER_MIN } from 'services/rateLimit';
@ -13,14 +14,18 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
}, },
async (_request, reply) => { async (_request, reply) => {
try { try {
const database = `${environment.gitea.raw}/database.json`;
const options = { headers: { 'Cache-Control': 'no-cache' } }; const options = { headers: { 'Cache-Control': 'no-cache' } };
const url = `${environment.gitea.raw}/database.json`; const response = await fetch(database, options);
const { rules, ...result } = await (await fetch(url, options)).json(); const { actions, exclusions, keywords, rules, ...rest } = await response.json();
reply.send({ reply.send({
data: { data: {
...result, ...rest,
actions: actions.map(parseActionName),
commonWords: keywords,
rules: rules.map(toDeclarativeNetRequestRule), rules: rules.map(toDeclarativeNetRequestRule),
skips: { domains: exclusions.overflows, tags: exclusions.tags },
}, },
success: true, success: true,
}); });
@ -35,17 +40,3 @@ export default (server: FastifyInstance, _options: RouteShorthandOptions, done:
done(); done();
}; };
function toDeclarativeNetRequestRule(urlFilter: string, index: number) {
return {
action: {
type: 'block',
},
condition: {
resourceTypes: ['font', 'image', 'media', 'object', 'script', 'stylesheet', 'xmlhttprequest'],
urlFilter,
},
id: index + 1,
priority: 1,
};
}

View File

@ -0,0 +1,39 @@
import { FastifyInstance, RouteShorthandOptions } from 'fastify';
import fetch from 'node-fetch';
import { toDeclarativeNetRequestRule } from 'services/compatibility';
import environment from 'services/environment';
import { RATE_LIMIT_3_PER_MIN } from 'services/rateLimit';
export default (server: FastifyInstance, _options: RouteShorthandOptions, done: () => void) => {
server.get(
'/data/',
{
config: {
rateLimit: RATE_LIMIT_3_PER_MIN,
},
},
async (_request, reply) => {
try {
const database = `${environment.gitea.raw}/database.json`;
const options = { headers: { 'Cache-Control': 'no-cache' } };
const response = await fetch(database, options);
const { rules, ...rest } = await response.json();
reply.send({
data: {
...rest,
rules: rules.map(toDeclarativeNetRequestRule),
},
success: true,
});
} catch (error) {
reply.send({
errors: [error.message],
success: false,
});
}
}
);
done();
};

View File

@ -0,0 +1 @@
export { default as default } from '../v5/issues';

View File

@ -0,0 +1 @@
export { default as default } from '../v5/report';

View File

@ -1,13 +1,32 @@
/** export function parseAction(action: Action): string {
* Parse the new fix object into the old string format used by older versions of the extension return `${action.domain}##${action.selector}##${action.name}${action.property ? `##${action.property}` : ''}`;
*/
export function parseNewFix(fix: Fix): string {
return `${fix.domain}##${fix.selector}##${fix.action}${fix.property ? `##${fix.property}` : ''}`;
} }
export interface Fix { export function parseActionName(
readonly action: string; action: Action
): Omit<Action, 'name'> & { readonly action: string } {
const { name, ...rest } = action;
return { action: name, ...rest };
}
export function toDeclarativeNetRequestRule(urlFilter: string, index: number) {
return {
action: {
type: 'block',
},
condition: {
resourceTypes: ['font', 'image', 'media', 'object', 'script', 'stylesheet', 'xmlhttprequest'],
urlFilter,
},
id: index + 1,
priority: 1,
};
}
export interface Action {
readonly domain: string; readonly domain: string;
readonly name: string;
readonly property?: string; readonly property?: string;
readonly selector: string; readonly selector: string;
} }