Smart IP
Smart IP identifica la ubicación geográfica del visitante (longitud/latitud, país, región, ciudad, código postal) basándose en la dirección IP, almacenando los datos en sesión y en el servicio de datos de usuario.
smart_ip
Install
composer require 'drupal/smart_ip:8.x-4.2'
Overview
Smart IP es un módulo integral de geolocalización que determina la ubicación geográfica de un visitante basándose en su dirección IP. El módulo identifica el país (código ISO 3166 de 2 caracteres), región, ciudad, código postal, latitud, longitud, zona horaria y si el usuario proviene de un país de la UE/GDPR.
Los datos de ubicación se almacenan en variables de sesión PHP ($_SESSION['smart_ip']) y en el servicio de datos de usuario de Drupal (module='smart_ip', name='geoip_location'). El almacenamiento puede deshabilitarse selectivamente por rol. El módulo proporciona una arquitectura de plugins extensible a través de submódulos de fuentes de datos, permitiendo a los administradores elegir entre varios proveedores de geolocalización incluyendo MaxMind GeoIP2 (base de datos binaria y servicio web), IP2Location, IPInfoDB y Abstract IP Geolocation.
Smart IP también incluye mecanismos de respaldo utilizando encabezados de geolocalización del lado del servidor desde Apache mod_geoip, nginx X-GeoIP-Country, Cloudflare IP Geolocation y Akamai EdgeScape cuando la fuente de datos principal falla. El módulo ofrece un plugin de condición Countries para control de visibilidad de bloques, modo de depuración para suplantación de IP durante pruebas y funciones de cumplimiento GDPR para prevenir el almacenamiento de datos de ubicación de visitantes de países de la UE.
Features
- Geolocalización basada en IP que identifica país, región, ciudad, código postal, latitud, longitud y zona horaria
- Múltiples fuentes de datos conectables: MaxMind GeoIP2 (base de datos binaria y servicio web), base de datos binaria IP2Location, servicio web IPInfoDB, servicio web Abstract IP Geolocation
- Submódulo Device Geolocation utilizando W3C Geolocation API con Google Geocoding para mayor precisión (número de calle, vecindario, áreas administrativas)
- Respaldo automático a encabezados de geolocalización del servidor (mod_geoip, X-GeoIP-Country, Cloudflare, Akamai EdgeScape)
- Configuración de geolocalización basada en roles: selecciona qué roles de usuario deben ser geolocalizados
- Opción de cumplimiento GDPR para prevenir el almacenamiento de datos de ubicación de visitantes de países UE/GDPR
- Modo de depuración con suplantación de direcciones IP por rol para propósitos de prueba
- Geolocalización por página específica: configura qué páginas deben activar actualizaciones de geolocalización
- Lista de exclusión de IP para omitir búsquedas de direcciones IP específicas
- Plugin de condición Countries para visibilidad de bloques basada en el país del visitante
- Actualizaciones automáticas de base de datos vía cron para fuentes de datos de base de datos binaria
- Herramienta de búsqueda manual de IP en la interfaz de administración
- Detección de zona horaria con formato configurable (identificador o desplazamiento UTC)
- Integración con el módulo Geo Time Zone para determinación precisa de zona horaria
- Datos de ubicación disponibles para JavaScript vía drupalSettings.smartIp
- Soporta direcciones IPv4 e IPv6
- Ubicación del usuario guardada en el registro con opción de preservar la ubicación original
Use Cases
Restricción de contenido basada en país
Usa el plugin de condición Countries para mostrar u ocultar bloques basándose en el país del visitante. Configura la visibilidad del bloque en /admin/structure/block, añade la condición Countries y selecciona qué países deberían ver el bloque. Útil para promociones regionales, avisos de cumplimiento legal o contenido localizado.
Publicidad geotargetizada
Accede a los datos de ubicación del visitante vía drupalSettings.smartIp en JavaScript o \Drupal::service('smart_ip.smart_ip_location')->getData() en PHP para servir anuncios u ofertas específicas por ubicación.
Cumplimiento GDPR para visitantes de la UE
Habilita la opción 'No guardar detalles de ubicación de visitantes de países GDPR' para prevenir el almacenamiento de datos personales de ubicación de visitantes de países miembros de la UE y territorios que siguen las regulaciones GDPR.
Optimización de rendimiento para sitios con caché
Cuando uses caché de página, habilita la opción 'Usar AJAX en la verificación de geolocalización del usuario' de Device Geolocation para realizar verificaciones de geolocalización de forma asíncrona sin romper la caché de página.
Desarrollo y pruebas
Usa la función de modo de depuración para probar la funcionalidad de geolocalización con direcciones IP específicas. Habilita el modo de depuración para roles específicos e ingresa direcciones IP de prueba para simular visitantes de diferentes ubicaciones.
Seguimiento de ubicación en registro de usuarios
Habilita 'Guardar detalles de ubicación del usuario al crear' para almacenar la ubicación original donde cada usuario se registró. Estos datos se almacenan por separado y se preservan incluso cuando la ubicación actual del usuario cambia.
Sitio de alto tráfico con base de datos local
Usa los submódulos de base de datos binaria MaxMind GeoIP2 o IP2Location para sitios de alto tráfico para evitar límites de tasa de API externa y latencia. Habilita actualizaciones automáticas de base de datos vía cron para mantener los datos actualizados.
Tips
- Usa la herramienta de Búsqueda manual en la página de administración para probar direcciones IP y verificar que tu fuente de datos esté funcionando correctamente.
- Para sitios de producción con alto tráfico, prefiere fuentes de base de datos binaria sobre servicios web para evitar límites de tasa de API y dependencias externas.
- Configura 'Adquirir/actualizar geolocalización del usuario en páginas nativas específicas de Drupal' para limitar la sobrecarga de geolocalización solo a las páginas necesarias.
- Combina con Views y otros módulos que soporten condiciones para crear listados de contenido conscientes de la ubicación.
- El módulo expone datos de ubicación a JavaScript vía drupalSettings.smartIp, habilitando geotargetización del lado del cliente sin llamadas AJAX adicionales.
- Al depurar, recuerda que la IP del modo de depuración tiene precedencia sobre la IP real del visitante - desactívalo antes de ir a producción.
Technical Details
Admin Pages 1
/admin/config/people/smart_ip
Página principal de configuración del módulo Smart IP. Configura la selección de fuente de datos, roles a geolocalizar, ajustes de depuración y realiza búsquedas manuales de IP.
Permissions 1
Hooks 1
hook_smart_ip_user_save_alter
Permite a los módulos modificar los datos de ubicación del usuario antes de que se guarden en la sesión y datos de usuario.
Troubleshooting 6
Asegúrate de que el rol 'anónimo' esté seleccionado en el ajuste 'Roles a geolocalizar'. Ten en cuenta que esto añade una sobrecarga sustancial ya que cada solicitud anónima activa una búsqueda de geolocalización.
Verifica que tu ruta del sistema de archivos privado esté configurada en settings.php. Sube el archivo de base de datos a la carpeta 'smart_ip' dentro de tu directorio de archivos privados. Verifica los permisos de archivo.
Verifica que tu fuente de datos esté correctamente configurada con claves API válidas o archivos de base de datos. Prueba la función de Búsqueda manual para verificar si la fuente de datos está respondiendo correctamente.
Asegúrate de que la clave API de Google Maps esté configurada. Verifica que la página se sirva sobre HTTPS (requerido para W3C Geolocation API). Verifica que JavaScript esté habilitado y no bloqueado.
Verifica si la dirección IP del usuario está en la lista de exclusión. Verifica que la página actual esté en la lista de páginas permitidas (si está configurada). Limpia las cookies/sesión del navegador o prueba con un navegador diferente.
Verifica que tu clave de licencia e ID de cuenta sean correctos. Verifica que cron se esté ejecutando correctamente. Asegura suficiente espacio en disco y permisos de escritura en el directorio de archivos privados.
Security Notes 5
- El permiso 'administer smart_ip' está marcado como acceso restringido - solo otórgalo a roles de confianza.
- Las claves API para servicios web se almacenan en la configuración - asegúrate de que los archivos de configuración estén debidamente asegurados y no expuestos en control de versiones.
- Los archivos de base de datos binaria deben almacenarse en el directorio de archivos privados, no en el directorio de archivos públicos.
- Cuando uses el modo de depuración, ten en cuenta que la IP de prueba configurada puede ser registrada o almacenada - usa IPs de prueba no sensibles.
- Las funciones de cumplimiento GDPR ayudan a cumplir con los requisitos regulatorios, pero pueden necesitarse medidas adicionales para el cumplimiento completo.