¿Puede un sitio web / servidor web ver la diferencia entre alguien que visita un sitio web escribiendo la dirección y una ventana emergente que ‘obliga’ al navegador a acceder al sitio?

Hay algunas formas de saberlo, pero ninguna es perfecta y todas tienen soluciones alternativas. Un ejemplo ayudará:

Por defecto, una ventana emergente tendrá un encabezado Referer que le indica dónde estaban cuando se hizo clic en el enlace, y escribir la URL cuenta como ‘acceso directo’ sin encabezado Referer. Esto no funciona en las siguientes situaciones:

  • correos electrónicos
  • Navegación segura a través de HTTPS
  • Técnicas de sombrero negro que ocultan al árbitro

Y así.

Existen soluciones alternativas que funcionan si el sitio con la ventana emergente está dispuesto a cooperar, como:

  • Compartir datos analíticos, para que el usuario pueda ser rastreado en múltiples sitios
  • Agregar un código como ‘? Utm_referer_campaign = awesome’ para que pueda ver a qué campaña de marketing respondía el usuario

etc.

Sin embargo, nada es infalible.

Realmente no. Una solicitud HTTP es una solicitud HTTP. Ya sea que se trate de una acción del usuario o de un fragmento de Javacript, el servidor solo ve el paquete de solicitud de la red. Si alguien estuviera tan inclinado, podría escribir un pequeño código de red que se ejecuta en una tostadora conectada a Internet para hacer la solicitud y se vería igual.

Sí puede. Cuando realiza una solicitud HTTP a cualquier sitio, lleva cierta información incluida. Uno de esos campos se llama Referer e indica de qué página proviene, por lo que si hace clic en un enlace en una página o una ventana emergente lo redirige, el campo Referer llevará esta información. Para que el propietario de la aplicación diferencie entre una visita directa (dirección de mecanografía en el navegador) o una visita recomendada, solo es importante verificar si el campo Referer es suficiente o no.