piggyback php javascript pixel

php - piggyback - pixel de facebook



Desarrollar un pĂ­xel de seguimiento (5)

Intento crear un píxel que rastree la URL actual en la que se encuentra el usuario cuando lo visita. Puedo usar JS (preferido) o un píxel de imagen 1x1. Con JS estoy asumiendo que necesitaría ejecutar una solicitud AJAX a un script PHP para capturar la información que necesito y con un píxel de imagen tengo problemas para obtener el URL actual.

También pensé en la URL que codifica la URL actual con JS y colocar dinámicamente el píxel de la imagen con la URL actual codificada como una cadena de consulta para un script PHP, pero eso me puede llegar a ser muy largo.

Si voy a utilizar la ruta AJAX, ¿qué biblioteca AJAX puedo usar? JQuery está demasiado hinchado para este propósito.

¿Alguna otra idea?


Aquí hay otra implementación de PHP de un píxel de seguimiento, del proyecto Open Web Analytics , que intenta básicamente ser un clon PHP de Google Analytics.

Devuelve una imagen GIF transparente 1x1 (sin usar una biblioteca de imágenes PHP), con un encabezado sin memoria caché (importante para un seguimiento preciso) y vacía la salida para que pueda continuar procesando los análisis sin bloquear la respuesta HTTP (rendimiento). Parece una implementación bastante avanzada, vale la pena probarlo.

<?php ignore_user_abort(true); // turn off gzip compression if ( function_exists( ''apache_setenv'' ) ) { apache_setenv( ''no-gzip'', 1 ); } ini_set(''zlib.output_compression'', 0); // turn on output buffering if necessary if (ob_get_level() == 0) { ob_start(); } // removing any content encoding like gzip etc. header(''Content-encoding: none'', true); //check to ses if request is a POST if ($_SERVER[''REQUEST_METHOD''] === ''POST'') { // the GIF should not be POSTed to, so do nothing... echo '' ''; } else { // return 1x1 pixel transparent gif header("Content-type: image/gif"); // needed to avoid cache time on browser side header("Content-Length: 42"); header("Cache-Control: private, no-cache, no-cache=Set-Cookie, proxy-revalidate"); header("Expires: Wed, 11 Jan 2000 12:59:00 GMT"); header("Last-Modified: Wed, 11 Jan 2006 12:59:00 GMT"); header("Pragma: no-cache"); echo sprintf(''%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%'',71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33,249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59); } // flush all output buffers. No reason to make the user wait for OWA. ob_flush(); flush(); ob_end_flush(); // DO ANALYTICS TRACKING HERE


Aquí hay un píxel de seguimiento extremadamente simplificado escrito en PHP.

riceball.com/tracking-pixel-works

Un píxel de seguimiento es como el faro más primitivo posible, y funciona explotando un hecho de las páginas web: las imágenes son una solicitud separada de la página.

Si ya puede ejecutar su código JS en la página de otra persona, simplemente debe ENVIAR los datos a su servidor. No es necesario mostrar un pequeño píxel que solo obtendrá el mismo tipo de datos.


Es un problema similar con este efecto, ya que una llamada a una función para ejecutar una marca de cuándo se vio o se abrió el correo electrónico se introdujo en la altura del píxel, pero no arroja la acción correctamente.

<img src="https://datafeeds.baruwa.com/1x1spacer.gif" width="1" height="1" alt="Web Bug from https://devorpenguin.des1.net/module/cartabandonmentpro/FrontCartAbandonment?token_cart=87c83b8f77318a54fdd6be91aacc3574&amp;id_cart=1002&amp;action=visualize&amp;wichRemind=1"> public static function visualize() { $wichRemind = Tools::getValue(''wichRemind''); $id_cart = Tools::getValue(''id_cart''); $token = Tools::getValue(''token_cart''); if ($token == md5(_COOKIE_KEY_.''recover_cart_''.$id_cart)) { $query = "UPDATE "._DB_PREFIX_."cartabandonment_remind SET visualize = 1 WHERE wich_remind = ".(int)$wichRemind." AND id_cart = ".(int)$id_cart; Db::getInstance()->Execute($query); } header(''Content-Type: image/png''); echo base64_decode(''iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=''); }


Salida 1px x 1px de esta manera:

header(''Content-type: image/png''); echo gzinflate(base64_decode(''6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA''));


Puede escribir una secuencia de comandos que crea y devuelve una imagen .gif , .jpeg o .png utilizando PHP para fines de seguimiento utilizando la biblioteca GD (que a menudo se distribuye con PHP en las versiones modernas). Si no tiene acceso a GD, siempre puede recompilar PHP con GD habilitado.

Ejemplo:

pixel.php (comentado a los efectos de la explicación):

<?php // Create an image, 1x1 pixel in size $im=imagecreate(1,1); // Set the background colour $white=imagecolorallocate($im,255,255,255); // Allocate the background colour imagesetpixel($im,1,1,$white); // Set the image type header("content-type:image/jpg"); // Create a JPEG file from the image imagejpeg($im); // Free memory associated with the image imagedestroy($im); ?>

En un ejemplo simple, puede llamar a este píxel de seguimiento utilizando el siguiente URL de ejemplo en un correo electrónico u otra página:

<img src="http://example.com/pixel.php?a=value1&b=value2&c=value3">



Usando variables:

Dentro de tu pixel.php puedes analizar e interpretar cualquier variable $_GET que se le pase dentro de la etiqueta de la imagen, de manera simplista:

if (isset($_GET[''a''])) { // (Do|log) act on a } if (isset($_GET[''b''])) { // (Do|log) act on b } if (isset($_GET[''c''])) { // (Do|log) act on c }

Aplica y repite lo que necesites, pero puedes ser bastante sofisticado sobre lo que haces y especialmente dado que tienes acceso a mucha información sobre el usuario al poder establecer vars en la cadena $_GET .

Un ejemplo más aplicable podría ser:

<img src="http://example.com/pixel.php?userid=98798&campaign=302&last=8">



Rastreando más que solo $ _GET variables:

También puede recoger mucha más información usando PHP, como por ejemplo:

// Server variables $ip = $_SERVER[''REMOTE_ADDR'']; $referer = $_SERVER[''HTTP_REFERER'']; $useragent = $_SERVER[''HTTP_USER_AGENT'']; $browser = get_browser(null, true); etc...

y luego tal vez insertarlo en una tabla de seguimiento en su base de datos:

$sql = "INSERT INTO campaign_tracking (''when'',''campaign'',''last'',''ip'',''useragent'') VALUES (NOW(),''$campaign'',''$last'',''$ip'',''$useragent'')";

Este es un (el) método básico utilizado ampliamente para el seguimiento de campañas de marketing por correo electrónico y, específicamente, en PHP, pero el mismo método es aplicable a otros lenguajes de scripting / programación y bibliotecas, y para otros fines también.

Información adicional y útil sobre GD: