Previsualiza e instala tu insignia
Prueba los estilos de abajo para ver exactamente lo que verán tus visitantes. Cuando estés listo, tu código personalizado te espera en tu panel; no necesitas saber programar.
Previsualiza tu estilo
Elige abajo un estilo, tamaño y color para ver tu insignia en vivo. Esto es solo una vista previa; no necesitas iniciar sesión.
Copia tu código desde el panel
Inicia sesión y PCrisk te da un fragmento listo con el estilo elegido integrado; funciona en todos los dominios de tu cuenta.
Pega, guarda y publica
Añádelo a tu sitio. Cuando tu dominio pase su escaneo diario, la insignia aparecerá automáticamente.
Sin cookies, sin rastreo, ~7 KB. La insignia carga después de tu página (así que nunca la ralentiza), no almacena nada sobre tus visitantes y no establece cookies.
La insignia solo aparece cuando tu último escaneo está limpio. Si acabas de registrarte, espera un poco a que termine tu primer escaneo. Un espacio en blanco simplemente significa “aún no se confirmó como limpio”, no que el código esté roto.
Guías por plataforma
Dos formas de añadir la insignia: instala nuestro plugin o pega el fragmento desde tu panel. Elige tu plataforma abajo; en ambos casos tarda unos minutos.
WordPress
Lo más fácil: instala el plugin gratis, sin código:
- En tu panel de WordPress ve a Plugins → Añadir nuevo.
- Busca PCrisk Trust Badge.
- Haz clic en Instalar ahora, luego Activar.
- Abre Trust Badge en el menú de administración, conecta tu sitio y luego elige un estilo y dónde aparece la insignia. La vista previa en vivo muestra exactamente lo que verán los visitantes.
¿Usas WooCommerce? El plugin lo detecta automáticamente y añade ubicaciones para la tienda: página de tienda, páginas de producto, carrito y pago, además de la ubicación general de tu sitio. No hace falta instalar nada más.
¿No puedes instalar plugins? Pega el fragmento de tu panel en un área de código del pie de página; por ejemplo, el gratuito “WPCode” o Apariencia → Editor de archivos del tema (haz una copia de seguridad primero).
ShopifyPróximamente
Nuestra app de Shopify está en camino. Ya está en desarrollo: instalación con un clic, sin código del tema, con ubicaciones en páginas de producto, carrito y pago. Hasta entonces, puedes añadir la insignia con el fragmento de abajo.
Mientras tanto:
- En el panel de Shopify ve a Tienda online → Temas.
- En tu tema actual haz clic en ⋯ -> Editar código.
- Abre layout/theme.liquid y pega el fragmento desde tu panel justo antes del cierre de </body> .
- Guardar. La insignia aparece en todas las páginas de tu tienda.
Wix
- Ve a Ajustes → Código personalizado en el panel de tu sitio.
- Haz clic en + Añadir código personalizado, pega el fragmento y configúralo para cargar en Todas las páginas, colocado en Body - final.
- Aplicar y publicar.
Squarespace
- Ve a Ajustes → Avanzado → Inyección de código.
- Pega el fragmento en el pie de página cuadro.
- Guardar. (La inyección de código requiere un plan Business o superior.)
Webflow, Framer y HTML personalizado
Webflow: Ajustes del proyecto → Código personalizado → pegar en el código del pie cuadro → publicar.
Framer: Ajustes del sitio → General → Código personalizado → Final de la etiqueta <body>.
Sitios con código propio: pega el fragmento justo antes de </body> en tu archivo de plantilla o diseño.
Personaliza tu insignia
Tus opciones se guardan como data-* atributos en la ubicación del fragmento <div> - el diseñador del panel los configura todos al generar tu código. Para cambiar el estilo después, elige allí un nuevo aspecto y pega el fragmento actualizado sobre el anterior. Esto controla cada atributo.
| Atributo | Valores | Qué hace |
|---|---|---|
data-style | shield, ribbon, minimal, bubble | La forma y disposición general de la insignia. |
data-size | small, medium, large | Tamaño general de la insignia. |
data-theme | light, dark, auto | Combina con el fondo de tu sitio. auto sigue el modo claro u oscuro de tu sitio. |
data-position | bottom-right, bottom-left, top-right, top-left | Fija la insignia en esa esquina de la pantalla; funciona con cualquiera style. Si lo omites, la insignia se muestra en línea dentro de su <div>. |
¿La quieres en un punto exacto, como a mitad del pago? El <div> en tu fragmento ES el lugar de la insignia: colócalo donde deba aparecer (incluso reserva su espacio para que tu diseño no se desplace). ¿Quieres insignias en varios lugares? Pega más divs; la etiqueta script solo debe aparecer una vez. Las insignias flotantes, de cualquier estilo con data-position - ignoran dónde está su div: se fijan en la esquina que elijas.
¿La insignia no aparece?
Revísalos en este orden: los dos primeros resuelven la gran mayoría de los casos.
Dale un momento y comprueba que tu último análisis esté limpio
La insignia solo se muestra cuando tu análisis diario más reciente está limpio. Esto es intencional: mantiene intacto el significado de la insignia, para que nunca se muestre en un sitio comprometido.
Si acabas de instalarla:
- Revisa tu panel de PCrisk - ¿aparece “Insignia activa” junto a tu dominio?
- Si un análisis sigue pendiente, espera a que termine y luego actualiza tu página.
- Si tu sitio fue marcado, resuelve el problema; la insignia volverá automáticamente tras el siguiente análisis limpio.
Tu sitio tiene una Content Security Policy (avanzado)
La buena noticia: 9 de cada 10 sitios pueden omitir esto. Una Content Security Policy (CSP) es una configuración de seguridad avanzada que debes activar expresamente. Si nunca has oído hablar de ella, casi seguro que no tienes una, y este no es tu problema.
Piensa en una CSP como una lista de invitados para tu sitio web - solo deja entrar servicios que hayas aprobado. Si tienes una, solo añade PCrisk a la lista con estas entradas:
script-src https://scanner.pcrisk.com
connect-src https://scanner.pcrisk.com
style-src 'unsafe-inline'
El style-src esta línea solo hace falta si tu política restringe estilos (p. ej., si establece style-src o solo default-src): la insignia aplica su diseño mediante un <style> inline, así que sin él la insignia carga pero queda invisible.
Vías rápidas:
• plugin de seguridad de WordPress (Wordfence, Really Simple Security, etc.): abre su configuración y añade estas entradas en la sección Content Security Policy.
• Cloudflare: tu sitio → Security → Settings → tu regla CSP → añade estas entradas.
• Wix / Squarespace / Shopify estándar: no hay que hacer nada; estos no usan políticas personalizadas, así que la insignia funciona sin más.
¿No estás seguro o aún no aparece? Copia este mensaje y envíaselo a quien gestione tu sitio web (tu desarrollador o soporte de hosting): sabrá exactamente qué hacer:
script-src https://scanner.pcrisk.com y connect-src https://scanner.pcrisk.com. Si nuestra política bloquea estilos inline, permite también 'unsafe-inline' en style-src. ¡Gracias!Un bloqueador de anuncios o extensión de privacidad la está ocultando
Algunos bloqueadores de anuncios o extensiones de privacidad agresivos (o navegadores como Brave con protección estricta) pueden bloquear scripts de terceros. Para comprobarlo, abre tu sitio en una ventana privada/de incógnito con las extensiones desactivadas, o pausa temporalmente tu bloqueador.
Esto solo afecta a la pequeña parte de visitantes que usan esas herramientas; la mayoría verá la insignia con normalidad. La insignia no establece cookies ni rastrea nada, por lo que esto es poco frecuente.
Comprueba que la insignia esté en un dominio añadido
La insignia comprueba el dominio exacto en el que se carga. Si añadiste example.com pero el snippet se ejecuta en un subdominio distinto (como shop.example.com), una URL de staging, o localhost, no encontrará coincidencia.
Asegúrate de que la página que muestra la insignia esté en un dominio que añadiste en tu panel. ¿La necesitas en varios subdominios? Añade cada uno a tu cuenta.
Insignia inline: ¿añadiste el contenedor?
Las insignias en línea (cualquier estilo sin data-position) se muestran en la ubicación <div class="pcrisk-badge"> de tu fragmento; asegúrate de que ese div esté en la página junto con la etiqueta script (algunos creadores de páginas eliminan los divs pero conservan los scripts). Sin div y sin data-* atributos en la etiqueta script, el motor no tiene dónde mostrarlo.
Cómo lo verifican tus visitantes
Una insignia que cualquiera puede falsificar no genera confianza. La nuestra se puede verificar de forma independiente; eso es lo que hace que valga la pena mostrarla.
Al hacer clic se abre un informe en vivo
Cada insignia se puede pulsar. Los visitantes llegan a tu informe público en scanner.pcrisk.com - alojado por nosotros, no por ti - que muestra el análisis más reciente y la puntuación de confianza.
Independiente por diseño
Como el informe está en un dominio que los visitantes no controlan, el resultado es fiable, igual que el candado del navegador es independiente del sitio que hay detrás.
Consejo: el enlace del informe se puede compartir por sí solo. Úsalo en facturas, páginas de socios o correos de soporte cuando necesites demostrar el estado de seguridad actual de tu sitio.
Qué ocurre si se detecta una amenaza
Nunca mostrarás un sello “verificado” en un sitio comprometido.
Te avisamos rápido
En cuanto un análisis detecta un problema, recibes un correo detallado: gravedad, qué se encontró, dónde y cómo solucionarlo.
La insignia se oculta automáticamente
Tu insignia se elimina automáticamente hasta que se resuelva el problema y vuelve en cuanto un análisis de seguimiento confirma que tu sitio vuelve a estar limpio.
Alertas de Slack y webhook
Recibe las mismas alertas que enviamos por correo — amenaza detectada, todo despejado, no se pudo completar el análisis — en Slack o en tu propio endpoint, en los mismos momentos. Configura ambos en tu panel en Settings → Integraciones de alertas.
Slack
En Slack, crea un Incoming Webhook para el canal que quieras (Slack: Apps → Incoming Webhooks → Add to a channel), pega la hooks.slack.com URL en tu panel y pulsa Enviar prueba de Slack. Eso es todo; no hace falta código.
Webhooks
Nosotros enviamos JSON por POST a tu endpoint HTTPS. Cuatro tipos de eventos:
• alert.opened - un escaneo marcó el sitio (puntuación inferior a 70); la insignia está en pausa.
• alert.resolved - un escaneo posterior salió limpio; la insignia se restablece.
• scan.failed - el escaneo diario no pudo completarse (sitio inaccesible); se envía una vez por interrupción.
• prueba - el Enviar prueba de webhook botón.
{
"event": "alert.opened",
"domain": "example.com",
"trust_score": 55,
"threat_type": "suspicious",
"severity": "medium",
"occurred_at": "2026-07-07T08:28:36.874Z"
}
Cada solicitud incluye tres encabezados: Content-Type: application/json, X-PCrisk-Event (el tipo de evento), y X-PCrisk-Signature - sha256= seguido del HMAC SHA-256 hexadecimal del cuerpo bruto de la solicitud, generado con el secreto de firma que aparece en tu panel. Verifícalo antes de confiar en una entrega.
Semántica de entrega: esperamos hasta 5 segundos una respuesta y contamos cualquier 2xx como aceptado; una entrega fallida se reintenta una vez, ~15 segundos después, y luego se descarta. Trata los webhooks como notificaciones, no como un registro: tu panel es el estado de referencia.
Verifica con el cuerpo bruto. La firma cubre los bytes exactos que enviamos. Si tu framework analiza el JSON antes de que puedas leer el cuerpo bruto (p. ej., un express.json()), volver a serializar el objeto analizado no reproducirá los mismos bytes; captura el cuerpo bruto, como hace cada ejemplo a continuación.
const crypto = require('crypto');
const express = require('express');
const app = express();
// express.raw keeps the body as the exact bytes we signed
app.post('/hooks/pcrisk', express.raw({ type: 'application/json' }), (req, res) => {
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.PCRISK_WEBHOOK_SECRET)
.update(req.body) // Buffer
.digest('hex');
const given = req.get('X-PCrisk-Signature') || '';
const ok = given.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected));
if (!ok) return res.status(401).end();
const event = JSON.parse(req.body);
console.log(event.event, event.domain, event.trust_score);
res.status(200).end(); // any 2xx marks the delivery as accepted
});
app.listen(3000);
<?php
$secret = getenv('PCRISK_WEBHOOK_SECRET');
$raw = file_get_contents('php://input'); // raw body, before any parsing
$given = $_SERVER['HTTP_X_PCRISK_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $raw, $secret);
if (!hash_equals($expected, $given)) {
http_response_code(401);
exit;
}
$event = json_decode($raw, true);
// $event['event'], $event['domain'], $event['trust_score'], ...
http_response_code(200); // any 2xx marks the delivery as accepted
import hashlib, hmac, os
from flask import Flask, request, abort
app = Flask(__name__)
SECRET = os.environ["PCRISK_WEBHOOK_SECRET"].encode()
@app.post("/hooks/pcrisk")
def pcrisk_hook():
raw = request.get_data() # raw body, before parsing
expected = "sha256=" + hmac.new(SECRET, raw, hashlib.sha256).hexdigest()
given = request.headers.get("X-PCrisk-Signature", "")
if not hmac.compare_digest(expected, given):
abort(401)
event = request.get_json()
# event["event"], event["domain"], event["trust_score"], ...
return "", 200 # any 2xx marks the delivery as accepted
# run with: flask --app hook run --port 3000
¿Vas a cambiar tu endpoint? Guarda la nueva URL en el panel y envía una prueba: el secreto de firma sigue siendo el mismo para tu cuenta. Las alertas son por incidente (una alert.opened por episodio por debajo de 70, no una por escaneo), así que tu canal no se saturará por un sitio que siga marcado.
REST API
Lleva tus dominios, puntuaciones, historial de escaneo y alertas a tus propios paneles, informes y monitoreo. Acceso de lectura en Pro; el plan Business añade gestión de dominios. La API solo expone propios dominios monitorizados.
Autenticación
Crea una clave en tu panel en Ajustes → Claves API (se muestra una vez; solo guardamos un hash) y envíala como token Bearer. Las claves heredan sus permisos de tu plan actual, y si revocas una en el panel se desactiva al instante.
curl https://scanner.pcrisk.com/api/v1/domains -H "Authorization: Bearer pcrisk_live_YOUR_KEY"
{
"success": true,
"data": [
{
"domain": "example.com",
"status": "verified",
"trust_score": 92,
"threat_type": "clean",
"last_scanned": "2026-07-07T06:12:04.000Z",
"open_alerts": 0,
"badge_visible": true,
"badge_live": true
}
]
}
Endpoints
GET /api/v1 - descubrimiento: tu plan y nivel.
GET /api/v1/domains - todos tus dominios con puntuación actual, tipo de amenaza y estado de la insignia.
GET /api/v1/domains/{domain} - un dominio.
GET /api/v1/domains/{domain}/history - historial de puntuación del escaneo (la profundidad depende de tu plan).
GET /api/v1/alerts - alertas de amenazas más recientes en todos los dominios, abiertas y resueltas.
POST /api/v1/domains (Business) - añade un dominio; la monitorización empieza de inmediato. Cuerpo: {"domain": "example.com"}.
DELETE /api/v1/domains/{domain} (Business) - elimina un dominio; los escaneos se detienen y la insignia deja de mostrarse.
Pruébalo
Pega una clave API de tu panel (Ajustes → Claves API) y llama aquí a cualquier endpoint de lectura. La clave solo va en esta solicitud, a este sitio; no se guarda nada, y la solicitud cuenta para tu límite de tasa como cualquier otra.
Convenciones: cada respuesta es JSON con success y data o código.error + mensaje.error (401 clave incorrecta, 403 plan/nivel, 404 no es tuyo, 429 límite de tasa alcanzado). El límite es 60 solicitudes/minuto por clave - revisa los encabezados X-RateLimit-Remaining y Retry-After .
Push + pull: combina la API con alertas webhook - los webhooks te avisan en cuanto algo cambia; la API te da el estado actual completo cuando lo pides. Deliberadamente no hay un endpoint para escanear dominios arbitrarios de terceros.
¿Aún necesitas ayuda?
Estaremos encantados de revisar tu configuración específica. Envíanos la dirección de tu sitio web y lo que estás viendo.