Cómo implementar el control de privacidad global (GPC) en Android por Qflair LLC | Octubre de 2020

¿Cómo activa el usuario GPC? Their el navegador o la extensión del navegador debe implementar Especificación de GPC, sentido cómo mostrar la señal GPC a dos componentes en la web: 1) servidor web (código remoto) y 2) código JavaScript del lado del cliente (código local).

GPC proporciona un sitio web que verifica que GPC esté realmente señalizado desde su navegador: https://global-privacy-control.glitch.me/ Lo usaremos a lo largo de esta publicación de blog para validar nuestro trabajo.

Tenga en cuenta que todo el código de muestra en forma de listas de Github no sigue necesariamente todas las mejores prácticas y está simplificado para facilitar la comprensión.

1) servidor web

Los servidores web aceptan solicitudes HTTP que contienen encabezados. Si la configuración de GPC está habilitada en el navegador, el encabezado de estas solicitudes debe incluir:

Sec-GPC: 1

Incluir encabezados HTTP personalizados puede parecer trivial con Android WebView:

Desde el sitio web para desarrolladores de Android para WebView # loadUrl (cadena, mapa ).

Siempre que intentamos cargar una URL, usamos:

Guisantes fáciles, ¿verdad? Esto funciona bien si el usuario visita solo un sitio y no hace clic en ningún enlace. Podemos verificar esto llamando

En la sección de detección del lado del servidor, veremos un pulgar hacia arriba:

Al navegar por primera vez a https://globalprivacycontrol.org/ y luego haga clic en «Probar contra servidor de referencia» para mostrar un pulgar hacia abajo para la detección del lado del servidor. WebView no ofrece una API que proporcione encabezados adicionales cuando la navegación no se inicia mediante programación y, por lo tanto, no se establece ningún encabezado de GPC. Eso es lo fundamental para llegar al lugar correcto; finalmente estamos hablando de privacidad.

Podemos resolver esto con la solución:

Hay una nota en la documentación. WebViewClient#shouldOverrideUrlLoading aconseja no hacerlo:

Nota: No llames WebView#loadUrl(String) con la URL de la solicitud y luego regresar true. Esto cancelará innecesariamente la carga actual y comenzará una nueva carga con la misma URL. La forma correcta de continuar cargando una URL determinada es simplemente regresar false, sin llamar WebView#loadUrl(String).

Tenga en cuenta dos puntos:

  1. No encontré otra alternativa a esta solución. Así que cuando WebView o WebViewClient ofreció una API para lograr esto sin levantar la carga, ¡me encantaría!
  2. (en broma) La documentación nos advierte que no llamemos WebView#loadUrl(String)pero estamos llamando WebView#loadUrl(String, Map<String, String>) en cambio, ¿está bien?

Tenga en cuenta que algunos navegadores conocidos, como DuckDuckGo, no lo han visto y están mostrando este comportamiento indeseable. Ojalá esto sea corregido pronto.

La mayoría de los sitios contienen código JavaScript que se ejecuta en su navegador; este código también puede comunicarse con los servidores, por lo que es importante exponer una señal GPC allí. La especificación define ese valor Navigator.globalPrivacyControl debería ser true cuando GPC está habilitado.

Propiedad de JavaScript para detectar preferencias de Especificación de GPC.

Como antes, buscamos métodos en WebView con «JavaScript» en el título y oro llamativo:

Desde el sitio web para desarrolladores de Android para WebView # EvaluJavascript.

Así que evaluemos algún código JavaScript que se configurará Navigator.globalPrivacyControl = true. Hará el trabajo:

Al cargar https://global-privacy-control.glitch.me/ , podemos ver los tan esperados pulgares hacia arriba en la sección de detección en el lado del cliente:

Pluma es un navegador de Android que utiliza los métodos descritos en esta publicación para implementar GPC. Debes habilitar GPC en Pluma Privacidad mejorada en Configuraciones pantalla.

Pluma se centra en la simplicidad, por lo que no encontrará muchas funciones ni desorden; solo una interfaz limpia. Considere descargar desde Google Play y proporcione comentarios por correo electrónico o Twitter (@PlumaBrowser).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *