Saltar al contenido

CLI local. RGPD, ePrivacy, Schrems II.

Audita tu sitio web antes de que intervengan los reguladores europeos.

KlarAudit lanza Chromium headless en tu máquina, registra las peticiones del first paint antes de cualquier clic de consentimiento y puntúa la página según TTDSG / TDDDG § 25, RGPD art. 6 y art. 83, LG München 3 O 17493/20 y Schrems II. Sin cuenta en la nube. Sin telemetría. Código de salida 1 ante hallazgos CRITICAL o HIGH.

npx klaraudit scan https://example.com

Traza de ejemplo

Lo que imprime la CLI en un first paint no conforme

KlarAudit no pulsa Aceptar. Observa la carga en reposo, resuelve las IP remotas con una base GeoIP local y puntúa la página con evidencias accionables (URL, IP, GeoIP, remediación). La traza corresponde a una ejecución NON_COMPLIANT representativa.

klaraudit scan https://shop.example.de --ci

$ Scanning https://shop.example.de timeout=15000ms

intercept network (pre-consent, no click)

targets: cookies, scripts, fonts, banner DOM, /impressum, /datenschutz

FAIL Google Tag Manager googletagmanager.com antes del consentimiento

FAIL Google Fonts fonts.googleapis.com 142.250.185.196 · GeoIP US

FAIL falta Rechazar / Ablehnen con hosts: googletagmanager.com

OK /impressum 200 /datenschutz 200

Score 45 / 100

Status NON_COMPLIANT (umbral < 60)

Gravedad Categoría Hallazgo Delta Remediación
CRITICAL TRACKING_CONSENT Google Tag Manager (googletagmanager.com) se cargó en el first paint antes de cualquier clic de consentimiento -30 Cargar GTM solo tras el opt-in (Consent Mode / puerta CMP).
HIGH CROSS_BORDER_TRANSFER Google Fonts desde fonts.googleapis.com resolvió a IP 142.250.185.196 en US — IP del visitante enviada a Google antes del consentimiento -15 Autoalojar fuentes o cargar Google Fonts solo tras el consentimiento.
MEDIUM BANNER_DARK_PATTERN Hay UI de consentimiento, pero falta Rechazar / Ablehnen con igual prominencia mientras hay hosts de terceros -10 Colocar Ablehnen junto a Aceptar con el mismo peso visual.

CI gate: FAIL el estado es NON_COMPLIANT; hay violaciones CRITICAL o HIGH.

exit 1

Manifiesto de inspección

Controles de first paint, en orden de inspección

Catálogo secuencial de las comprobaciones que puede disparar un escaneo automatizado alemán o europeo antes de cualquier interacción. Cada fila enfrenta la vista del regulador externo con el hallazgo local de la CLI.

Document
KLAR-IMF-01
Scope
Alcance: first paint previo al consentimiento
Engine
Motor: Playwright Chromium (local)
  1. 01

    Intercepción de red previa al consentimiento

    CRITICAL / TRACKING_CONSENT

    Detecta GTM, Meta Pixel y otros rastreadores conocidos que se disparan antes de que el usuario pulse consentimiento. El runner engancha las peticiones de página antes de la navegación y nunca pulsa Aceptar.

    REF: TTDSG / TDDDG § 25, RGPD art. 6

    Los rastreadores de requerimientos registran googletagmanager.com y facebook.net en el first paint. La IP del visitante ya está en un registro de un encargado estadounidense. El almacenamiento o acceso en el equipo terminal carece de base en el § 25 TDDDG.

    TRACKING_CONSENT  CRITICAL  -30
    Google Tag Manager (googletagmanager.com)
    cargado en first paint antes del consentimiento
    evidencia: URL gtag/js · GeoIP US
  2. 02

    Fugas dinámicas de IP transfronterizas

    HIGH / CROSS_BORDER_TRANSFER

    Detecta Google Fonts, otros hosts de terceros fuera de la UE y edges CDN/hosting de primera parte (por ejemplo un edge de Vercel fuera de la UE). Las IP remotas se clasifican con una base GeoIP local. El escáner no llama a una API de lookup en la nube.

    REF: LG München 3 O 17493/20, Schrems II

    El LG München I consideró que cargar Google Fonts desde servidores estadounidenses sin consentimiento transmite ilícitamente la IP del visitante. Schrems II invalidó el Privacy Shield. Las transferencias a EE. UU. sin anotar siguen siendo un riesgo de multa del art. 83 RGPD.

    CROSS_BORDER_TRANSFER  HIGH  -15
    Google Fonts fonts.googleapis.com
    IP 142.250.185.196 · GeoIP US
    Autoalojar fuentes o retrasar hasta el consentimiento
  3. 03

    Capa de consentimiento y patrones oscuros

    MEDIUM / BANNER_DARK_PATTERN

    Valida el DOM de la primera capa en busca de una acción de rechazo con la misma prominencia que aceptar. Si falla, el informe lista los hosts o cookies de terceros que hicieron necesario el banner.

    REF: Directrices del CEPD 03/2022

    Las Directrices del CEPD 03/2022 exigen una elección real. Un Aceptar destacado junto a un enlace gris de ajustes se trata como patrón oscuro. Un Ablehnen de igual prominencia es la referencia alemana.

    BANNER_DARK_PATTERN  MEDIUM  -10
    Falta Rechazar / Ablehnen con igual prominencia
    mientras hosts: googletagmanager.com
  4. 04

    Puerta de pipeline local y auditoría sin conexión

    GATE / CI_GATE

    Se ejecuta por completo en tu runner o CLI. Cero dependencias en la nube. Códigos de salida deterministas para CI/CD. La captura de red, las heurísticas DOM y GeoIP permanecen en la máquina que lanzó el escaneo. Use --format json para salida legible por máquina.

    REF: Contrato de salida CI, RGPD art. 32

    Los escáneres externos no esperan a un panel SaaS. Puntúan el sitio tal como se entrega. Un merge que introduce una fuente estadounidense o un píxel pre-consentimiento es visible en el siguiente rastreo.

    --ci  exit 1
    estado NON_COMPLIANT, o cualquier hallazgo CRITICAL/HIGH
    npx klaraudit scan URL --format json

Puntuación

Deducciones heurísticas y bandas de estado

Puntuación base 100. Las deducciones se aplican por incidente y el resultado se recorta a 0. Las deducciones CRITICAL tienen un tope de -60. Son heurísticas técnicas, no un dictamen jurídico.

Consentimiento de rastreo CRITICAL -30 / incidente (CRITICAL total limitado a -60) Proveedores concretos (GTM, Google Analytics, Meta Pixel, DoubleClick, Hotjar, TikTok, Clarity) o cookies de rastreo se disparan en el first paint. Los hallazgos incluyen la URL de la petición y una remediación concreta. Un banner de primera capa ausente con actividad de terceros también es CRITICAL.
Transferencia transfronteriza HIGH -15 / activo no UE único Peticiones resueltas fuera del EEE mediante geoip-lite local. Distingue Google Fonts, hosts de terceros y edges CDN/hosting de primera parte. La evidencia incluye IP y país cuando está disponible.
Patrones oscuros del banner MEDIUM -10 / incidente Existe una IU de consentimiento, pero Rechazar / Ablehnen (o equivalente) falta o es más débil que Aceptar en la primera capa. El informe lista los hosts/cookies de terceros que activaron la comprobación.
Páginas obligatorias LOW -5 / página ausente /impressum o /imprint y /datenschutz o /privacy deben devolver HTTP 200. Los hallazgos incluyen la URL sondeada y el estado.

>= 85

COMPLIANT

El umbral heurístico del first paint se cumple.

60-84

WARNING

Siguen existiendo problemas. Revisar antes del lanzamiento.

< 60

NON_COMPLIANT

--ci termina con 1. Corregir antes del lanzamiento.

Licencia

Gratis y de código abierto bajo MIT

KlarAudit es un proyecto de portfolio de Shoebill Software. La CLI completa es gratuita: escaneos locales, puertas CI, JSON e informes PDF A4. Sin cuenta, sin telemetría, sin plan de pago.

  • Licencia MIT — usar, modificar y redistribuir
  • Salida en terminal, JSON y PDF A4
  • npx local o Docker con Chromium incluido
  • Códigos de salida --ci deterministas para merge gates

Ejecutar en local

npx klaraudit scan https://example.com
npx klaraudit scan https://example.com --format json
docker run --rm --init --ipc=host ghcr.io/shoebill-software/klaraudit scan https://example.com

Los hallazgos son heurísticas técnicas, no asesoramiento jurídico. Con npx, instala Chromium una vez: npx playwright-core@1.63.0 install chromium — o usa la imagen Docker, que ya incluye el navegador.