fix: Add missing service_registry.py to main
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,513 @@
|
|||||||
|
"""
|
||||||
|
Service Registry — Master list of 80+ third-party web services.
|
||||||
|
|
||||||
|
Used by website_scanner.py and synced to consent-tester/script_analyzer.py.
|
||||||
|
Pure data file — no logic. Each entry contains:
|
||||||
|
- Regex pattern for detection in HTML/script URLs
|
||||||
|
- Provider metadata (name, country, EU adequacy, consent requirement, legal reference)
|
||||||
|
|
||||||
|
Categories: tracking, marketing, cdn, chatbot, payment, video, social,
|
||||||
|
heatmap, testing, tag_manager, push, support, error_tracking, crm, accessibility
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Format: regex_pattern -> metadata dict
|
||||||
|
# All patterns are case-insensitive when matched
|
||||||
|
SERVICE_REGISTRY: dict[str, dict] = {
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# TRACKING & ANALYTICS
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"google.?analytics|gtag\(|UA-\d{4,}|G-[A-Z0-9]{8,12}": {
|
||||||
|
"id": "google_analytics", "name": "Google Analytics", "category": "tracking",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"googletagmanager|gtm\.js": {
|
||||||
|
"id": "google_tag_manager", "name": "Google Tag Manager", "category": "tag_manager",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"facebook\.net/.*fbevents|fbq\(": {
|
||||||
|
"id": "facebook_pixel", "name": "Meta/Facebook Pixel", "category": "marketing",
|
||||||
|
"provider": "Meta Platforms", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"hotjar\.com|_hjSettings": {
|
||||||
|
"id": "hotjar", "name": "Hotjar", "category": "heatmap",
|
||||||
|
"provider": "Hotjar Ltd", "country": "MT", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (Session Recording)",
|
||||||
|
},
|
||||||
|
r"clarity\.ms": {
|
||||||
|
"id": "ms_clarity", "name": "Microsoft Clarity", "category": "heatmap",
|
||||||
|
"provider": "Microsoft", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (Session Replay), Art. 44 DSGVO",
|
||||||
|
},
|
||||||
|
r"matomo|piwik": {
|
||||||
|
"id": "matomo", "name": "Matomo", "category": "tracking",
|
||||||
|
"provider": "InnoCraft/Self-hosted", "country": "EU/Self", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "Cookieless moeglich, §25 TDDDG",
|
||||||
|
},
|
||||||
|
r"plausible\.io": {
|
||||||
|
"id": "plausible", "name": "Plausible Analytics", "category": "tracking",
|
||||||
|
"provider": "Plausible Insights", "country": "EE", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "EU-Anbieter, cookieless",
|
||||||
|
},
|
||||||
|
r"etracker\.com|etracker\.de|etrackerCookieless": {
|
||||||
|
"id": "etracker", "name": "etracker", "category": "tracking",
|
||||||
|
"provider": "etracker GmbH", "country": "DE", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, DE-Anbieter mit ePrivacy-Siegel",
|
||||||
|
},
|
||||||
|
r"pirsch\.io": {
|
||||||
|
"id": "pirsch", "name": "Pirsch Analytics", "category": "tracking",
|
||||||
|
"provider": "Pirsch GmbH", "country": "DE", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "DE-Anbieter, cookieless",
|
||||||
|
},
|
||||||
|
r"fathom\.": {
|
||||||
|
"id": "fathom", "name": "Fathom Analytics", "category": "tracking",
|
||||||
|
"provider": "Fathom Analytics", "country": "CA", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "Kanada Angemessenheitsbeschluss, cookieless",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# WERBENETZE
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"doubleclick\.net|googlesyndication|googleads|adwords": {
|
||||||
|
"id": "google_ads", "name": "Google Ads", "category": "marketing",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"tiktok\.com/i18n|analytics\.tiktok": {
|
||||||
|
"id": "tiktok_pixel", "name": "TikTok Pixel", "category": "marketing",
|
||||||
|
"provider": "ByteDance", "country": "CN", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Drittlandtransfer China",
|
||||||
|
},
|
||||||
|
r"linkedin\.com/insight|snap\.licdn": {
|
||||||
|
"id": "linkedin_insight", "name": "LinkedIn Insight", "category": "marketing",
|
||||||
|
"provider": "LinkedIn/Microsoft", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"pinterest\.com/ct|pinimg\.com/ct": {
|
||||||
|
"id": "pinterest_tag", "name": "Pinterest Tag", "category": "marketing",
|
||||||
|
"provider": "Pinterest Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"criteo\.com|criteo\.net": {
|
||||||
|
"id": "criteo", "name": "Criteo", "category": "marketing",
|
||||||
|
"provider": "Criteo SA", "country": "FR", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (Retargeting)",
|
||||||
|
},
|
||||||
|
r"taboola\.com": {
|
||||||
|
"id": "taboola", "name": "Taboola", "category": "marketing",
|
||||||
|
"provider": "Taboola Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"outbrain\.com": {
|
||||||
|
"id": "outbrain", "name": "Outbrain", "category": "marketing",
|
||||||
|
"provider": "Outbrain Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"amazon-adsystem|amazon\.com/ap/pixel": {
|
||||||
|
"id": "amazon_ads", "name": "Amazon Ads", "category": "marketing",
|
||||||
|
"provider": "Amazon.com", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"bing\.com/bat|bat\.bing": {
|
||||||
|
"id": "bing_ads", "name": "Bing/Microsoft Ads", "category": "marketing",
|
||||||
|
"provider": "Microsoft", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# NEWSLETTER / EMAIL MARKETING
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"mailchimp\.com|list-manage\.com|chimpstatic": {
|
||||||
|
"id": "mailchimp", "name": "Mailchimp", "category": "marketing",
|
||||||
|
"provider": "Intuit/Mailchimp", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO, Double Opt-In",
|
||||||
|
},
|
||||||
|
r"brevo\.com|sendinblue\.com|sibforms": {
|
||||||
|
"id": "brevo", "name": "Brevo (Sendinblue)", "category": "marketing",
|
||||||
|
"provider": "Brevo SAS", "country": "FR", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (Formular-Tracking)",
|
||||||
|
},
|
||||||
|
r"cleverreach\.com": {
|
||||||
|
"id": "cleverreach", "name": "CleverReach", "category": "marketing",
|
||||||
|
"provider": "CleverReach GmbH", "country": "DE", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "Double Opt-In",
|
||||||
|
},
|
||||||
|
r"activecampaign\.com": {
|
||||||
|
"id": "activecampaign", "name": "ActiveCampaign", "category": "marketing",
|
||||||
|
"provider": "ActiveCampaign LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"rapidmail\.de|rapidmail\.io": {
|
||||||
|
"id": "rapidmail", "name": "Rapidmail", "category": "marketing",
|
||||||
|
"provider": "rapidmail GmbH", "country": "DE", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "Double Opt-In",
|
||||||
|
},
|
||||||
|
r"hubspot\.com|hs-scripts|hs-analytics|hsforms": {
|
||||||
|
"id": "hubspot", "name": "HubSpot", "category": "crm",
|
||||||
|
"provider": "HubSpot Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"getresponse\.com": {
|
||||||
|
"id": "getresponse", "name": "GetResponse", "category": "marketing",
|
||||||
|
"provider": "GetResponse SA", "country": "PL", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "Double Opt-In",
|
||||||
|
},
|
||||||
|
r"convertkit\.com|convertkit-mail": {
|
||||||
|
"id": "convertkit", "name": "ConvertKit", "category": "marketing",
|
||||||
|
"provider": "ConvertKit LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# CDN & FONTS
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"fonts\.googleapis\.com|fonts\.gstatic\.com": {
|
||||||
|
"id": "google_fonts", "name": "Google Fonts (remote)", "category": "cdn",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "LG Muenchen I, Az. 3 O 17493/20",
|
||||||
|
},
|
||||||
|
r"cdn\.cloudflare\.com|cdnjs\.cloudflare\.com": {
|
||||||
|
"id": "cloudflare_cdn", "name": "Cloudflare CDN", "category": "cdn",
|
||||||
|
"provider": "Cloudflare Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse (CDN)",
|
||||||
|
},
|
||||||
|
r"cloudfront\.net": {
|
||||||
|
"id": "aws_cloudfront", "name": "AWS CloudFront", "category": "cdn",
|
||||||
|
"provider": "Amazon Web Services", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse (CDN), SCCs",
|
||||||
|
},
|
||||||
|
r"azureedge\.net|azure\.com/cdn": {
|
||||||
|
"id": "azure_cdn", "name": "Azure CDN", "category": "cdn",
|
||||||
|
"provider": "Microsoft", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse (CDN), SCCs",
|
||||||
|
},
|
||||||
|
r"bunny\.net|bunnycdn": {
|
||||||
|
"id": "bunnycdn", "name": "BunnyCDN", "category": "cdn",
|
||||||
|
"provider": "BunnyCDN d.o.o.", "country": "SI", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "EU-Anbieter",
|
||||||
|
},
|
||||||
|
r"keycdn\.com": {
|
||||||
|
"id": "keycdn", "name": "KeyCDN", "category": "cdn",
|
||||||
|
"provider": "proinity LLC", "country": "CH", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "CH Angemessenheitsbeschluss",
|
||||||
|
},
|
||||||
|
r"use\.typekit\.net|typekit\.com": {
|
||||||
|
"id": "adobe_fonts", "name": "Adobe Fonts", "category": "cdn",
|
||||||
|
"provider": "Adobe Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO (IP-Uebermittlung)",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# CHATBOTS & SUPPORT
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"widget\.intercom\.io|intercomcdn": {
|
||||||
|
"id": "intercom", "name": "Intercom", "category": "chatbot",
|
||||||
|
"provider": "Intercom Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO, KI-gestuetzt",
|
||||||
|
},
|
||||||
|
r"tidio\.co|tidioChatApi": {
|
||||||
|
"id": "tidio", "name": "Tidio Chat", "category": "chatbot",
|
||||||
|
"provider": "Tidio LLC", "country": "PL", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "EU-Anbieter",
|
||||||
|
},
|
||||||
|
r"zendesk\.com/embeddable|zdassets": {
|
||||||
|
"id": "zendesk", "name": "Zendesk", "category": "chatbot",
|
||||||
|
"provider": "Zendesk Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"crisp\.chat|client\.crisp\.chat": {
|
||||||
|
"id": "crisp", "name": "Crisp Chat", "category": "chatbot",
|
||||||
|
"provider": "Crisp IM SAS", "country": "FR", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "EU-Anbieter",
|
||||||
|
},
|
||||||
|
r"livechatinc\.com|livechat\.com": {
|
||||||
|
"id": "livechat", "name": "LiveChat", "category": "chatbot",
|
||||||
|
"provider": "LiveChat Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"freshdesk\.com|freshchat": {
|
||||||
|
"id": "freshdesk", "name": "Freshdesk/Freshchat", "category": "support",
|
||||||
|
"provider": "Freshworks Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"helpscout\.net|beacon-v2": {
|
||||||
|
"id": "helpscout", "name": "HelpScout Beacon", "category": "support",
|
||||||
|
"provider": "Help Scout PBC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# PAYMENT
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"js\.stripe\.com|stripe\.com/v3": {
|
||||||
|
"id": "stripe", "name": "Stripe", "category": "payment",
|
||||||
|
"provider": "Stripe Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Art. 6(1)(b) Vertragserfuellung, SCCs",
|
||||||
|
},
|
||||||
|
r"paypal\.com/sdk|paypalobjects": {
|
||||||
|
"id": "paypal", "name": "PayPal", "category": "payment",
|
||||||
|
"provider": "PayPal Holdings", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Art. 6(1)(b) Vertragserfuellung",
|
||||||
|
},
|
||||||
|
r"klarna\.com|klarna-payments": {
|
||||||
|
"id": "klarna", "name": "Klarna", "category": "payment",
|
||||||
|
"provider": "Klarna AB", "country": "SE", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "EU, aber Art. 22 DSGVO bei Bonitaetspruefung!",
|
||||||
|
},
|
||||||
|
r"adyen\.com": {
|
||||||
|
"id": "adyen", "name": "Adyen", "category": "payment",
|
||||||
|
"provider": "Adyen NV", "country": "NL", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "EU-Anbieter",
|
||||||
|
},
|
||||||
|
r"mollie\.com": {
|
||||||
|
"id": "mollie", "name": "Mollie", "category": "payment",
|
||||||
|
"provider": "Mollie BV", "country": "NL", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "EU-Anbieter",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# HEATMAPS & SESSION RECORDING
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"fullstory\.com|fs\.js": {
|
||||||
|
"id": "fullstory", "name": "FullStory", "category": "heatmap",
|
||||||
|
"provider": "FullStory Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (Session Replay), Art. 44 DSGVO",
|
||||||
|
},
|
||||||
|
r"mouseflow\.com": {
|
||||||
|
"id": "mouseflow", "name": "Mouseflow", "category": "heatmap",
|
||||||
|
"provider": "Mouseflow ApS", "country": "DK", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (Session Recording)",
|
||||||
|
},
|
||||||
|
r"crazyegg\.com": {
|
||||||
|
"id": "crazyegg", "name": "Crazy Egg", "category": "heatmap",
|
||||||
|
"provider": "Crazy Egg Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"luckyorange\.com": {
|
||||||
|
"id": "luckyorange", "name": "Lucky Orange", "category": "heatmap",
|
||||||
|
"provider": "Lucky Orange LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# A/B TESTING
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"optimizely\.com|cdn-pci\.optimizely": {
|
||||||
|
"id": "optimizely", "name": "Optimizely", "category": "testing",
|
||||||
|
"provider": "Optimizely Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"visualwebsiteoptimizer|vwo\.com": {
|
||||||
|
"id": "vwo", "name": "VWO", "category": "testing",
|
||||||
|
"provider": "Wingify", "country": "IN", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44 DSGVO",
|
||||||
|
},
|
||||||
|
r"abtasty\.com": {
|
||||||
|
"id": "abtasty", "name": "AB Tasty", "category": "testing",
|
||||||
|
"provider": "AB Tasty SAS", "country": "FR", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# TAG MANAGER (non-Google)
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"tealium\.com|tealiumiq": {
|
||||||
|
"id": "tealium", "name": "Tealium", "category": "tag_manager",
|
||||||
|
"provider": "Tealium Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"segment\.com|cdn\.segment\.io|analytics\.js": {
|
||||||
|
"id": "segment", "name": "Segment", "category": "tag_manager",
|
||||||
|
"provider": "Twilio/Segment", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"assets\.adobedtm\.com|launch-": {
|
||||||
|
"id": "adobe_launch", "name": "Adobe Launch", "category": "tag_manager",
|
||||||
|
"provider": "Adobe Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# PUSH NOTIFICATIONS
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"onesignal\.com": {
|
||||||
|
"id": "onesignal", "name": "OneSignal", "category": "push",
|
||||||
|
"provider": "OneSignal Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"pushwoosh\.com": {
|
||||||
|
"id": "pushwoosh", "name": "Pushwoosh", "category": "push",
|
||||||
|
"provider": "Pushwoosh Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"firebase\.googleapis\.com/messaging|firebaseinstallations": {
|
||||||
|
"id": "firebase_messaging", "name": "Firebase Cloud Messaging", "category": "push",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# VIDEO & MEDIA
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"youtube\.com/embed|youtube-nocookie|ytimg": {
|
||||||
|
"id": "youtube", "name": "YouTube", "category": "video",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, 2-Klick empfohlen",
|
||||||
|
},
|
||||||
|
r"player\.vimeo\.com|vimeocdn": {
|
||||||
|
"id": "vimeo", "name": "Vimeo", "category": "video",
|
||||||
|
"provider": "Vimeo Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"wistia\.com|wistia\.net": {
|
||||||
|
"id": "wistia", "name": "Wistia", "category": "video",
|
||||||
|
"provider": "Wistia Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"jwplayer\.com|jwplatform": {
|
||||||
|
"id": "jwplayer", "name": "JW Player", "category": "video",
|
||||||
|
"provider": "JW Player", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# SOCIAL MEDIA EMBEDS
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"platform\.twitter\.com|x\.com/embed": {
|
||||||
|
"id": "twitter_embed", "name": "X/Twitter Embed", "category": "social",
|
||||||
|
"provider": "X Corp", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"instagram\.com/embed|cdninstagram": {
|
||||||
|
"id": "instagram_embed", "name": "Instagram Embed", "category": "social",
|
||||||
|
"provider": "Meta Platforms", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"connect\.facebook\.net|facebook\.com/plugins": {
|
||||||
|
"id": "facebook_social", "name": "Facebook Social Plugin", "category": "social",
|
||||||
|
"provider": "Meta Platforms", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, EuGH Fashion ID",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# CAPTCHA
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"recaptcha|grecaptcha": {
|
||||||
|
"id": "recaptcha", "name": "Google reCAPTCHA", "category": "other",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"hcaptcha\.com": {
|
||||||
|
"id": "hcaptcha", "name": "hCaptcha", "category": "other",
|
||||||
|
"provider": "Intuition Machines", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse (Bot-Schutz)",
|
||||||
|
},
|
||||||
|
r"challenges\.cloudflare\.com|turnstile": {
|
||||||
|
"id": "cf_turnstile", "name": "Cloudflare Turnstile", "category": "other",
|
||||||
|
"provider": "Cloudflare Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse (Bot-Schutz)",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# MAPS
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"maps\.googleapis\.com|maps\.google\.com": {
|
||||||
|
"id": "google_maps", "name": "Google Maps", "category": "other",
|
||||||
|
"provider": "Google LLC", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"openstreetmap\.org": {
|
||||||
|
"id": "osm", "name": "OpenStreetMap", "category": "other",
|
||||||
|
"provider": "OSM Foundation", "country": "GB", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse",
|
||||||
|
},
|
||||||
|
r"mapbox\.com|api\.mapbox": {
|
||||||
|
"id": "mapbox", "name": "Mapbox", "category": "other",
|
||||||
|
"provider": "Mapbox Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# ERROR TRACKING
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"sentry\.io|sentry-cdn": {
|
||||||
|
"id": "sentry", "name": "Sentry", "category": "error_tracking",
|
||||||
|
"provider": "Sentry Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse (Error Tracking)",
|
||||||
|
},
|
||||||
|
r"bugsnag\.com": {
|
||||||
|
"id": "bugsnag", "name": "Bugsnag", "category": "error_tracking",
|
||||||
|
"provider": "SmartBear", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse",
|
||||||
|
},
|
||||||
|
r"datadoghq\.com|dd-rum": {
|
||||||
|
"id": "datadog_rum", "name": "Datadog RUM", "category": "error_tracking",
|
||||||
|
"provider": "Datadog Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (Real User Monitoring)",
|
||||||
|
},
|
||||||
|
r"newrelic\.com|nr-data\.net|bam\.nr-data": {
|
||||||
|
"id": "newrelic", "name": "New Relic Browser", "category": "error_tracking",
|
||||||
|
"provider": "New Relic Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (RUM)",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# CRM TRACKING
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"pardot\.com|pi\.pardot": {
|
||||||
|
"id": "pardot", "name": "Salesforce Pardot", "category": "crm",
|
||||||
|
"provider": "Salesforce Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"pipedrive\.com/tracking": {
|
||||||
|
"id": "pipedrive", "name": "Pipedrive Tracking", "category": "crm",
|
||||||
|
"provider": "Pipedrive OÜ", "country": "EE", "eu_adequate": True,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG",
|
||||||
|
},
|
||||||
|
r"zoho\.com/analytics|zohocdn": {
|
||||||
|
"id": "zoho", "name": "Zoho Analytics", "category": "crm",
|
||||||
|
"provider": "Zoho Corp", "country": "IN", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44 DSGVO",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# ANALYTICS (additional platforms)
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"vercel-analytics|va\.vercel-scripts": {
|
||||||
|
"id": "vercel_analytics", "name": "Vercel Analytics", "category": "tracking",
|
||||||
|
"provider": "Vercel Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Privacy-fokussiert, pruefbar",
|
||||||
|
},
|
||||||
|
r"netlify-insights|netlify\.com/analytics": {
|
||||||
|
"id": "netlify_analytics", "name": "Netlify Analytics", "category": "tracking",
|
||||||
|
"provider": "Netlify Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Server-side, kein Client-Tracking",
|
||||||
|
},
|
||||||
|
r"heap\.io|heapanalytics": {
|
||||||
|
"id": "heap", "name": "Heap Analytics", "category": "tracking",
|
||||||
|
"provider": "Heap Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"amplitude\.com|cdn\.amplitude": {
|
||||||
|
"id": "amplitude", "name": "Amplitude", "category": "tracking",
|
||||||
|
"provider": "Amplitude Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"mixpanel\.com": {
|
||||||
|
"id": "mixpanel", "name": "Mixpanel", "category": "tracking",
|
||||||
|
"provider": "Mixpanel Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG, Art. 44-49 DSGVO",
|
||||||
|
},
|
||||||
|
r"posthog\.com|us\.posthog|eu\.posthog": {
|
||||||
|
"id": "posthog", "name": "PostHog", "category": "tracking",
|
||||||
|
"provider": "PostHog Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": True, "legal_ref": "§25 TDDDG (EU-Hosting moeglich)",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# ACCESSIBILITY OVERLAYS
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"accessibe\.com|acsbapp": {
|
||||||
|
"id": "accessibe", "name": "accessiBe", "category": "accessibility",
|
||||||
|
"provider": "accessiBe Ltd", "country": "IL", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "Israel Angemessenheitsbeschluss",
|
||||||
|
},
|
||||||
|
r"userway\.org": {
|
||||||
|
"id": "userway", "name": "UserWay", "category": "accessibility",
|
||||||
|
"provider": "UserWay Inc", "country": "US", "eu_adequate": False,
|
||||||
|
"requires_consent": False, "legal_ref": "Berechtigtes Interesse (Barrierefreiheit)",
|
||||||
|
},
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# CONSENT MANAGEMENT (not a violation — informational)
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
r"didomi|cookiebot|onetrust|usercentrics|consentmanager|quantcast|borlabs|tarteaucitron|klaro": {
|
||||||
|
"id": "cmp", "name": "Consent Management Platform", "category": "cmp",
|
||||||
|
"provider": "Various", "country": "EU", "eu_adequate": True,
|
||||||
|
"requires_consent": False, "legal_ref": "CMP vorhanden",
|
||||||
|
},
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user