saltarse - ¿Hay alguna solución para establecer cookies de terceros en Iframe para safari?
recaptcha evadir (2)
Los iframes ocultos (¡o no ocultos!) No funcionarán, ya que aún violarían la política de origen idéntico.
Intente buscar CORS - "Intercambio de recursos de origen cruzado". Es un estándar que ahora se implementa en todos los principales navegadores.
Estoy teniendo la necesidad de navegar a sitios de terceros (SSO) desde mi aplicación, esto funciona bien en Chrome, IE9 y Firefox, pero no en Safari. Hubo una solución para tener oculto el iframe en la página para establecer la cookie y luego navegar al iframe real, pero este truco ya no funciona. También traté de abrir una nueva ventana con acción como URL de terceros para establecer cookies en el navegador y luego abrirlas en el iframe, pero esto tiene la desventaja de que se abre una pequeña ventana que parece un hack. ¿Hay alguna solución para configurar la cookie en iframe para Safari?
Introducción a las cookies de seguimiento
"Seguimiento de cookies" es una parte muy importante del ecosistema publicitario en línea. Ellos toneladas de escenarios de uso. Aquí hay un ejemplo llamado reorientación.
Se sabe que muchos compradores de Internet no hacen compras inmediatamente después de ver un buen negocio en el sitio web de comercio electrónico. Primero eligen una buena, dejan el sitio web y regresan en un par de horas o días para hacer un pedido real.
Para estimular a esos usuarios, los sitios web utilizan la llamada tecnología de reorientación. Básicamente, quieren recordar a los usuarios que abandonaron su sitio web sin hacer un pedido y mostrarles un anuncio relevante en otros sitios web. Por lo general, los sitios web de comercio electrónico delegan dicho trabajo en plataformas publicitarias en línea, como AdExchanges, DSP, etc.
Desde el punto de vista técnico, funciona de la siguiente manera:
El dueño del sitio web pone una pequeña porción de código HTML. La pieza de código se llama "píxel de seguimiento". Consideremos un caso simple cuando el píxel de seguimiento es una imagen GIF transparente:
...
<img src="http://pixel.sample-ad-exchange.com/pixel.gif">
..http://pixel.sample-ad-exchange.com/pixel.gif
coloca una cookie para el dominio ''.sample-ad-exchange.com'' con el nombre user_id. En esta cookie se almacena una identificación de usuario única generada (si la cookie ya existe, el servidor simplemente se salta esta parte)sample-ad-exchange.com recuerda internamente que el usuario con este id visitó el sitio de comercio electrónico
Cuando se solicita a sample-ad-exchange.com que muestre un anuncio en otro lugar (llamando a tag.sample-ad-exchange.com/show_ad.js, por ejemplo), recibe la cookie user_id junto con la solicitud http.
sample-ad-exchange.com comprueba internamente si este usuario visitó antes sitios de comercio electrónico. Si lo ha hecho, podría mostrarle un anuncio muy relevante
El problema
Como puede ver, la capacidad de colocar cookies es la parte viable del esquema de reorientación. Este tipo de cookies se denomina "cookies de terceros" porque el código de píxel está ubicado en el dominio del anunciante (por ejemplo, my-cool-store.com) y el píxel en sí mismo está ubicado en el dominio de intercambio de anuncios de terceros (.sample-ad-exchange .com). Por defecto, diferentes navegadores tienen una política diferente sobre las cookies de terceros.
Chrome, Firefox, IE before 8.0 - siempre acepta cookies de terceros
IE 8.0 y versiones posteriores: aceptan cookies de terceros únicamente si el sitio web declara explícitamente cómo utilizará las cookies. La declaración se realiza a través del protocolo P3P. Como cada especificación del W3C, esta también es muy críptica. Pero la esencia es el encabezado HTTP llamado "P3P" que debe enviar junto con la cookie de respuesta HTTP. Este contenido de encabezado funciona bien, aunque no tengo idea de qué es exactamente lo que declara: ''P3P: CP = "NOI DSP COR NID CURa ADMA DEVa PSAa PSDA NUESTRO BUS COM INT OTC PUR STA"''
Safari: nunca acepta cookies de terceros
Safari no fue un gran problema para la industria antes de que apareciera el iPad y ganó gran popularidad. Los estudios muestran que los usuarios de iPad tienden a comprar en línea incluso más que los chicos habituales de PC.
Trick 1.0 (ya no funciona)
De hecho, Safari a veces no rechaza las cookies de terceros. Ocurre que el usuario realizó alguna acción relacionada con el dominio de terceros. Google Analytics (y otras plataformas también) aprovecharon esta característica: insertaron un iframe y simulación de formulario dentro de él. No me detendré en los detalles técnicos aquí. En primer lugar, este truco le costó a Google $ 22.5 millones y segundo, el truco ya no funciona en las últimas versiones de Safari.
Trick 2.0 (HTML5 localStorage)
La idea de este truco es utilizar HTML5 localStorage API. Esta API es muy similar a las cookies: permite administrar las preferencias del usuario desde JavaScript y almacenarlo localmente en el cuadro de usuario. ¿Por qué no almacenar el id de usuario en localStorage? La primera versión del código I se me ocurrió:
<script type="text/javascript">
if (typeof navigator != "undefined" && typeof navigator.vendor != "undefined" && navigator.vendor.indexOf("Apple") >= 0 && typeof localStorage != "undefined") {
//Check if browser is made by Apple (means it''s Safari) and local storage is available
var userId = localStorage.getItem("user_id");
if (userId == null) {
//set user is if user is unknown
userId = Math.random();
localStorage.setItem("user_id", userId);
}
var img = document.createElement(''img'');
img.src = "http://pixel.sample-ad-exchange.com/pixel.gif?user_id=" + user_id;
var body = document.getElementsByTagName(''body'')[0];
body.appendChild(img);
}
La idea es bastante sencilla: busque la clave user_id en el almacenamiento local (cree una si no existe) y pase user_id al servidor de píxeles como parámetro GET. Entonces el servidor registrará esta identificación en lugar de disparar la cookie.
Pero este código no está funcionando bien. Cada dominio tiene su propio almacenamiento local. Y si el píxel de rastreo se activó en my-cool-store.com user_id se almacenará en el almacenamiento local de my-cool-store.com. Si el mismo usuario visita other-domain.com con el código de seguimiento más adelante, se tratará como uno nuevo.
Arreglar ese buen truco antiguo con iframe funcionará. En lugar de img tag, insertaremos iframe tag con source en algún lugar dentro de pixel.sample-ad-exchange.com. Y coloque el código de detección del usuario dentro del iframe. Como iframe se ejecuta "dentro" de pixel.sample-ad-exchange.com, el almacenamiento local será el mismo para todos los sitios rastreados. Aquí hay un ejemplo completo:
Codigo de localización:
<script type="text/javascript">
if (typeof navigator != "undefined" && typeof navigator.vendor != "undefined" && `navigator.vendor.indexOf("Apple") >= 0 && typeof localStorage != "undefined") {`
var iframe = document.createElement(''iframe'');
img.src = "http://pixel.sample-ad-exchange.com/iframe.html";
var body = document.getElementsByTagName(''body'')[0];
body.appendChild(img);
}
</script>
Código Iframe ( http://pixel.sample-ad-exchange.com/iframe.html
)
<html>
<head></head>
<body>
<script type="text/javascript">
var userId = localStorage.getItem("user_id");
if (userId == null) {
//set user is if user is unknown
userId = Math.random();
localStorage.setItem("user_id", userId);
}
var img = document.createElement(''img'');
img.src = "http://pixel.sample-ad-exchange.com/pixel.gif?user_id=" + user_id;
var body = document.getElementsByTagName(''body'')[0];
body.appendChild(img);
</script>
</body>
</html>
Problema legal
La pregunta interesante es si este método es legal. Znd si la próxima compañía que lo usa recibirá una multa de $ 22.5 millones. No soy abogado, pero desde mi punto de vista del sentido común, la configuración de Safari dice explícitamente "Bloquear cookies de terceros de terceros y anunciantes" y LocalStorage no es una "cookie". El enfoque anterior parece legítimo.