En macOS, Safari y Chrome no comparten mecanismo de gestión. Cada uno se controla con un payload distinto dentro del perfil de configuración, así que restringir el acceso web implica configurar los dos: no hay un único ajuste que cubra ambos.
Esta guía recorre cada uno, y también la trampa con la que tropieza casi todo el mundo en Safari.
Antes de empezar
El Mac está inscrito en Applivery, mediante Apple MDM, Automated Device Enrollment o inscripción manual. Ninguno de los dos payloads requiere supervisión.
Ambos payloads se pueden importar como configuración custom: ve a Policies, selecciona tu política de macOS y entra en + Add configuration → + Import. Ahí puedes pegar el XML o subirlo con Load XML.
Para Safari hay una vía mejor: Applivery expone el payload como configuración nativa en + Add configuration → Parental Controls: Content Filter.
Puedes combinar ambos payloads en un mismo
.mobileconfigbajo el mismoPayloadContent, o importarlos como configuraciones independientes dentro de la misma política.
El usuario tiene que reiniciar el navegador. Hasta que no se relanza, sigue funcionando con la configuración que leyó al arrancar, así que la restricción parece no haberse aplicado. Es lo primero que hay que comprobar antes de investigar nada más.
Google Chrome
Chrome en macOS se gestiona mediante managed preferences inyectadas en el dominio com.google.Chrome, usando sus políticas nativas URLBlocklist y URLAllowlist.
Dirígete a tus Políticas 1, selecciona tu política de macOS, entra en + Añadir configuración → + importar 2 y pega o sube el XML.

Bloquear dominios concretos
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.google.Chrome</string>
<key>PayloadUUID</key>
<string>7D9A8B87-7A4F-4B9E-9C75-111111111111</string>
<key>PayloadDisplayName</key>
<string>Google Chrome - URL Blocklist</string>
<key>PayloadIdentifier</key>
<string>com.google.Chrome.7D9A8B87-7A4F-4B9E-9C75-111111111111</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>URLBlocklist</key>
<array>
<string>website1.com</string>
<string>website2.com</string>
</array>
</dict>
</array>
<key>PayloadDisplayName</key>
<string>Chrome URL Policy macOS</string>
<key>PayloadIdentifier</key>
<string>com.applivery.profile.f537cccc-6b42-4a4d-a432-9ef86ae7366a</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>8c99db2f-eb79-4b1a-9099-827422b47588</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Permitir solo una lista de sitios
Bloquea todos los hosts con un único asterisco y después lista las excepciones:
<key>URLBlocklist</key>
<array>
<string>*</string>
</array>
<key>URLAllowlist</key>
<array>
<string>mail.google.com</string>
<string>applivery.com</string>
</array>
Formato de los filtros
Las entradas siguen el patrón [scheme://][.]host[:port][/path][@query].
Entrada | Con qué coincide |
|---|---|
| El dominio y todos sus subdominios. No necesitas una entrada |
| Solo ese host exacto. Los demás subdominios siguen accesibles. |
| Todos los hosts. Es un valor especial por sí solo, no un comodín que puedas meter dentro de un nombre de host. |
Dos límites que conviene conocer:
El asterisco no es un comodín general.
*.website1.comno sirve para cubrir subdominios — unwebsite1.coma secas ya lo hace. Tampoco se admite al final de una ruta, así quehttps://ejemplo.com/*no es una entrada válida.Puedes listar hasta 1.000 entradas.
Cuando las dos listas chocan, gana el filtro más específico. Chrome selecciona los filtros con la coincidencia de host más larga, después los de ruta más larga y después los que tengan más tokens de consulta. Si un filtro de bloqueo y uno de permiso son igual de específicos, gana el de permiso.
Comprobar que se ha aplicado
En el Mac, abre chrome://policy y confirma que URLBlocklist o URLAllowlist aparecen con Source: Platform y el valor que esperas. Si no están, el perfil no ha llegado; si están pero la navegación sigue funcionando, el navegador no se ha reiniciado.
Una vez funcionando, al visitar un sitio de la lista Chrome muestra su página de sitio bloqueado.
Safari
Safari en macOS no usa el payload WebContentFilter de iOS e iPadOS: ese requiere supervisión y es exclusivo de iOS. En macOS el equivalente es el payload de Controles Parentales, com.apple.familycontrols.contentfilter.
Puedes importarlo como XML custom, pero el formulario nativo es la mejor vía. Abajo están las dos.
Usar el formulario nativo
Applivery expone este payload como configuración nativa, con los campos traducidos y validados en el panel.
Dirígete a tus Políticas 3 y selecciona la política de macOS que quieras modificar.
En el menú lateral izquierdo, haz clic en + Añadir configuración, busca control parental, selecciona Control parental: Filtro de contenidos 4 y pulsa + Añadir.

Usa los campos marcados como deprecados. El formulario recomienda los nuevos Denylist y Allowlist, y a fecha de hoy hay que ignorar esa recomendación: las claves nuevas no aplican el bloqueo de forma fiable en macOS, y las deprecadas sí.
Utiliza Filtrar lista negra y Filtrar lista blanca. Apple las deprecó en macOS 15.2, pero siguen funcionando — incluido en macOS 26 Tahoe.
Los interruptores maestros
Restringir Web debe estar en ON para que se aplique cualquier filtrado. Con él desactivado, nada más de la configuración tiene efecto. Lo mismo ocurre con Utilizar filtro de contenidos, que activa el filtrado automático de contenido de Apple.
Dos modos, mutuamente excluyentes
El formulario respeta la misma lógica del payload: solo se usa un modo a la vez.
Bloqueo selectivo — bloquea sitios concretos y el resto queda accesible:
Filtrar lista negra: los sitios a bloquear, uno por elemento con + Add element.
Filtrar lista blanca: excepciones dentro de ese bloqueo. Útil sobre todo cuando Use Content Filter está activo y el filtro automático de contenido adulto está bloqueando un sitio que no debería.
Lista blanca activada debe permanecer en OFF. Si lo activas, pasas al otro modo y la blacklist deja de aplicarse.
Permitir solo los sitios listados — bloquea todo excepto una lista:
Lista blanca activada: ON.
Lista blanca de sitios: el único campo con efecto en este modo, y obligatorio una vez Lista blanca activada está activo.
Filtrar lista negra se ignora mientras este modo esté activo. No hace falta vaciarlo.
Objetivo | Restringir Web | Lista blanca activada | Campo a rellenar |
|---|---|---|---|
Bloquear sitios concretos, permitir el resto | ON | OFF | Filtrar lista negra |
Permitir solo ciertos sitios, bloquear el resto | ON | ON | Lista blanca de sitios |
Usar XML custom
Si prefieres importar el payload directamente, así se bloquean sitios concretos:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.apple.familycontrols.contentfilter</string>
<key>PayloadUUID</key>
<string>A2B3C4D5-6E7F-4A1B-9C2D-222222222222</string>
<key>PayloadDisplayName</key>
<string>Safari - Content Filter</string>
<key>PayloadIdentifier</key>
<string>com.applivery.safari.A2B3C4D5-6E7F-4A1B-9C2D-222222222222</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>restrictWeb</key>
<true/>
<key>useContentFilter</key>
<true/>
<key>filterBlacklist</key>
<array>
<string>https://www.website1.com</string>
<string>https://www.website2.com</string>
<string>https://website3.com</string>
</array>
</dict>
</array>
<key>PayloadDisplayName</key>
<string>Safari URL Policy macOS</string>
<key>PayloadIdentifier</key>
<string>com.applivery.profile.b6d1e2f3-4a5b-4c6d-8e9f-0a1b2c3d4e5f</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>b6d1e2f3-4a5b-4c6d-8e9f-0a1b2c3d4e5f</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Y así se permiten únicamente los sitios listados:
<key>restrictWeb</key>
<true/>
<key>whitelistEnabled</key>
<true/>
<key>siteWhitelist</key>
<array>
<string>https://mail.google.com</string>
<string>https://applivery.com</string>
</array>
whitelistEnabled y useContentFilter son mutuamente excluyentes. Usa uno u otro, nunca los dos en el mismo payload.
Formato de las URLs en Safari
Las URLs deben empezar por
http://ohttps://. Si el sitio responde en ambos, añade una entrada para cada uno.La coincidencia es por raíz de cadena. Bloquear
https://www.website1.combloquea tambiénwww.website1.com/exampley cualquier ruta por debajo, pero no cubre automáticamente otros subdominios comoexample.website1.com. Añádelos como entradas independientes si los necesitas.Las redirecciones no se siguen. Si una URL bloqueada o permitida redirige a otra, el destino tiene que estar también en la lista.
El filtro deshabilita además borrar el historial y los datos de navegación de Safari, y desactiva la navegación privada.
Bloquear el sitio web no es bloquear la herramienta
Bloquear un dominio en Chrome o Safari solo impide el acceso vía navegador. Muchas herramientas tienen una app nativa de escritorio que habla directamente con sus servidores, sin pasar por ningún navegador, y que por tanto no se ve afectada por URLBlocklist ni por filterBlacklist.
Si el objetivo es impedir el uso de un servicio y no solo el acceso a su web, combina esta configuración con el control de aplicaciones — consulta Bloquear y permitir apps.
Resumen de payloads
Navegador | PayloadType | Claves de bloqueo | Claves de permitido | Supervisión |
|---|---|---|---|---|
Google Chrome |
|
|
| No requerida |
Safari |
|
|
| No requerida |
Apple introdujo claves renombradas en macOS 15.2 — filterDenyList, filterAllowList, siteAllowList y allowListEnabled — y deprecó las originales al mismo tiempo. La tabla anterior usa deliberadamente los nombres deprecados, porque son los que a día de hoy bloquean de forma fiable.
Antes de desplegarlo
Despliega primero en un Mac y confirma dos cosas: que la política ha llegado, usando chrome://policy en el caso de Chrome, y que el navegador se ha reiniciado. La mayoría de los "el bloqueo no funciona" se explican por una de esas dos, no por el payload.