Saltar al contenido

Sirve el script desde tu propio dominio

Actualizado el 18 de octubre de 2026

Algunos bloqueadores de anuncios y rastreadores bloquean las peticiones a dominios de analítica, incluido statsdot.com. Si sirves el script y sus peticiones desde tu propio dominio, esas listas ya no coinciden. Esto es opcional: la mayoría de los sitios funcionan correctamente sin ello.

La idea: una ruta en tu sitio, por ejemplo /sd/, redirige todo a https://statsdot.com/. El script se carga entonces desde https://example.com/sd/js/script.js y envía las visitas a https://example.com/sd/api/collect, que tu servidor reenvía.

Tu fragmento de código queda así:

<script defer data-domain="example.com" src="/sd/js/script.js"></script>

Mantén data-domain como el sitio que añadiste en Statsdot. Elige un nombre de ruta neutral: /sd/, /s/ o cualquier palabra que no sea "analytics" o "stats".

La dirección del visitante

Statsdot necesita la dirección IP del visitante (solo en memoria, nunca almacenada) para contar visitantes únicos. Detrás de un proxy, Statsdot ve la dirección de tu servidor, por lo que el proxy debe reenviar la dirección del visitante en la cabecera X-Forwarded-For. Sin ella, cada visita cuenta como el mismo visitante.

Nginx

location /sd/ {
    proxy_pass https://statsdot.com/;
    proxy_set_header Host statsdot.com;
    proxy_ssl_server_name on;
    # Detrás de Cloudflare, usa $http_cf_connecting_ip en lugar de $remote_addr.
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Cookie "";
}

La barra inclinada final en proxy_pass elimina /sd de la ruta.

Cloudflare Workers

Crea un Worker con una ruta example.com/sd/*:

export default {
  async fetch(request) {
    const url = new URL(request.url);
    const headers = new Headers(request.headers);
    headers.set('X-Forwarded-For', request.headers.get('CF-Connecting-IP') ?? '');
    headers.delete('Cookie');

    return fetch('https://statsdot.com' + url.pathname.replace(/^\/sd/, '') + url.search, {
      method: request.method,
      headers,
      body: request.method === 'POST' ? request.body : undefined,
    });
  },
};

Next.js y Vercel

En next.config.js:

module.exports = {
  async rewrites() {
    return [{ source: '/sd/:path*', destination: 'https://statsdot.com/:path*' }];
  },
};

Netlify

En _redirects:

/sd/*  https://statsdot.com/:splat  200

Comprueba que funciona

Abre tu sitio y luego tu panel: la visita aparecerá en cuestión de segundos. Tras un día con tráfico real, comprueba que los visitantes parecen plausibles. Si cada visita se cuenta como un único visitante, tu servidor no está reenviando X-Forwarded-For: configúralo como en los ejemplos de Nginx o Worker. Si tu sitio envía una política de seguridad de contenido (Content Security Policy), el script ahora proviene de tu propio dominio, por lo que 'self' es suficiente.