Filtro de contenido

Existen diferentes maneras de implementar filtros de red y contenido en las extensiones de Chrome. En esta guía, se proporciona una descripción general de las funciones de filtrado de contenido disponibles para las extensiones y los diferentes enfoques, técnicas y APIs de filtrado que pueden usar las extensiones de Chrome.

Filtrar solicitudes de red

La forma principal de filtrar las solicitudes de red en extensiones de Chrome es usar la API de chrome.declarativeNetRequest. Con las solicitudes de red declarativas, los desarrolladores pueden bloquear o modificar las solicitudes de red especificando reglas declarativas. El formato de la regla de solicitud de red declarativa se basa en las capacidades de la sintaxis de la lista de filtros que usan la mayoría de los bloqueadores de anuncios.

Estas reglas pueden hacer lo siguiente:

  • Bloquear una solicitud de red
  • Actualiza el esquema de URL a un esquema seguro (http a https o ws a wss).
  • Redireccionar una solicitud de red
  • Modifica los encabezados de solicitud o respuesta.

Chrome admite reglas integradas en una extensión y las que se actualizan de manera dinámica (por ejemplo, en respuesta a una configuración remota o una entrada del usuario).

Agrupar reglas de filtros con su extensión

Las reglas incluidas en el paquete de extensión se denominan “reglas estáticas”. Estas reglas se instalan y actualizan cuando se instala o actualiza una extensión. Chrome limita la cantidad de reglas estáticas que puede declarar una extensión.

En el caso de las reglas estáticas de solicitudes de red declarativas, Chrome tiene un grupo compartido global de 300,000 reglas que el conjunto de extensiones instaladas puede usar en conjunto. Además, cada extensión tiene garantizada una asignación de 30,000 reglas estáticas. Por ejemplo, si un usuario tiene instalada una sola extensión de filtrado de contenido, esta puede usar hasta 330,000 reglas estáticas de solicitudes de red declarativas. Para tener una idea de cuántas reglas se trata, la popular lista de filtros EasyList, que usan la mayoría de los bloqueadores de anuncios, consta de alrededor de 35,000 reglas de red.

Las reglas de solicitudes de red declarativas estáticas se pueden organizar en diferentes conjuntos de reglas. Una extensión puede especificar hasta 100 conjuntos de reglas estáticos, de los cuales se pueden habilitar 50 a la vez.

Agrega reglas de filtro de forma dinámica en el entorno de ejecución

Algunas reglas no se pueden agrupar con la extensión. En cambio, las extensiones deben agregarlas durante el tiempo de ejecución. que se denominan "reglas dinámicas".

En el caso de las reglas de solicitudes netas declarativas dinámicas, Chrome permite un máximo de 30,000 reglas dinámicas seguras por extensión. La mayoría de las reglas se consideran reglas seguras: block, allow, allowAllRequests o upgradeScheme. Incluso si una regla no se considera segura (por ejemplo, redirect), puedes agregarlas de forma dinámica, pero con un límite máximo inferior de 5,000, que también se considera dentro del límite de 30,000 reglas dinámicas. Para ponerlo en perspectiva, entre el 98% y el 99% de las reglas de la lista de filtros de la lista de tareas fáciles son reglas seguras.

Las extensiones de filtrado de contenido pueden usar reglas estáticas y dinámicas, respectivamente, para agrupar reglas de filtrado conocidas con su extensión y actualizar sus extensiones con nuevas reglas de filtrado de contenido desde sus servidores siempre que sea necesario.

Adapta reglas según las solicitudes observadas

El ecosistema de anuncios evoluciona constantemente, y los filtros de contenido deben actualizarse en consecuencia. Si combinas chrome.webRequest y las reglas dinámicas de solicitud de red declarativa, es posible analizar las solicitudes de red en busca de posibles incumplimientos de privacidad y bloquearlas en el futuro.

El enfoque básico es el siguiente:

  1. Analiza las solicitudes web con la API de chrome.webRequest y trata de identificar automáticamente aquellas que no cumplen con tus requisitos de privacidad, por ejemplo, mediante aprendizaje automático.
  2. Crea una regla de solicitud de red declarativa dinámica para cada solicitud identificada en el paso dos, de manera que las solicitudes similares se bloqueen en el futuro.
  3. (Opcional) Envía de vuelta la regla de solicitud de red declarativa identificada a tu servidor para que se pueda agregar como regla de solicitud de red declarativa estática en la próxima actualización de la extensión.

El beneficio de este enfoque es que el análisis se realiza de forma asíncrona y no afectará negativamente el rendimiento del sitio web.

Permitir que los usuarios definan sus propias reglas de filtrado

Puedes permitir que tus usuarios definan sus propias reglas de filtrado de contenido proporcionando una IU de configuración de filtro en tu extensión. Convierte estas reglas definidas por el usuario en reglas de solicitud de red declarativas y agrégalas como reglas dinámicas. Estas reglas seguirán estando disponibles para los usuarios a medida que se mantengan durante todas las sesiones del navegador y las actualizaciones de las extensiones. Con este enfoque, los usuarios pueden agregar hasta 30,000 reglas personalizadas.

Filtra elementos en páginas web

Filtrar las solicitudes de red es solo una parte importante del filtrado de contenido. Otra parte importante es quitar el contenido no deseado directamente de las páginas web. Por ejemplo, más del 40% de las reglas de las listas de filtros de listas fáciles definen cómo los clientes deben ocultar los elementos de página.

Para ello, puedes usar las secuencias de comandos de contenido. Las secuencias de comandos de contenido se ejecutan en el contexto de páginas web y pueden modificarlas usando el DOM.

Las extensiones de Chrome no pueden ejecutar código alojado de forma remota. Sin embargo, los datos de un servidor sobre qué elementos ocultar no se ven afectados, ya que se consideran datos de configuración. Por lo tanto, las reglas de elementos se pueden actualizar en el tiempo de ejecución siempre que sea necesario.

Filtrar solicitudes de red en políticas instaladas de extensiones

Los casos de uso empresariales y educativos a menudo tienen requisitos extremadamente estrictos para el filtrado de contenido y redes, como filtrar las solicitudes según su contenido. Para habilitar estos casos de uso, las extensiones instaladas por políticas tienen una forma adicional de filtrar y bloquear solicitudes de red. Con la opción de "bloqueo" con eventos en la API de webRequest, es posible implementar un filtro de contenido programático que ejecute una lógica personalizada en cada solicitud para decidir si se debe bloquear o no una solicitud. Esto se limita a las extensiones instaladas con políticas, ya que tienen un mayor nivel de confianza.

Cómo interceptar solicitudes de navegación

Las solicitudes de navegación se pueden filtrar con las reglas de solicitud de red declarativas. Por ejemplo, es posible que quieras omitir las URLs de seguimiento que redireccionan al usuario al destino previsto. Un enfoque para controlar esto es redireccionar una solicitud de navegación https://tracker.com?redirect=https%3A%2F%2Fexample.com a una página de extensión (que debe configurarse como recurso accesible desde la Web), que luego ejecutará una secuencia de comandos para extraer el objetivo de redireccionamiento y redireccionarlo al destino mediante window.location.replace("https://example.com") eludir la herramienta de seguimiento de vínculos.