Contador de clicks en links salientes compatibles con buscadores
EL problema de la
transmisión de PageRank en los intercambios de
links
La solución al problema:
una técnica inédita
Anatomía de un sencillo
sitio web que implementa esta
solución
Un link desde nuestras páginas no sólo
envía visitas al sitio web al que
apunta. Desde la aparición del sistema de
posicionamiento por popularidad (introducido por
Google con su
mecanismo de PageRank), un link del tipo "<A HREF=…" se
considera como un "voto" al sitio que recibe el enlace, lo que
ayuda a mejorar su posición en los resultados de las
búsquedas.
Sin embargo, en muchos sitios de Internet resulta prioritario
contabilizar los clicks que hacen los usuarios en los enlaces
salientes (como se acostumbra hacer en los programas de
intercambio de links por efectividad, también conocidos
como "tops"). En estos programas los links salientes no son
"verdaderos links hacia el sitio destino", sino que toman la
forma <a href="out.php?URL=www.sitiodestino.com">.
Este enlace, para Google es un link a una página
interior de nuestro sitio (en este caso out.php), que toma como
parámetro una dirección destino para ejecutar una
redirección. Pero Google ignorará el
parámetro recibido por el script, por no ser el destino
del link "real".
Este artículo describe una técnica para
generar links verdaderos, capaces de ser seguidos por Google y
transmitir pagerank, pero que también permiten a nuestros
programas realizar un seguimiento de cuántos usuarios
hacen click sobre estos links. A la fecha de publicación
del presente artículo (setiembre del 2004) ningún
programa hace
uso de este mecanismo. Esperemos que a partir de este
artículo los desarrolladores incorporen esta tecnología para
beneficio de todos los webmasters.
EL
problema de la transmisión de PageRank en los intercambios
de links
Según la propia documentación de Google (http://www.google.es/bot.html), el
googlebot (el robot de Google que periódicamente explora
la web) es capaz de seguir sólo enlaces de dos tipos:
anchors (<A HREF=… >) e imágenes
(<IMG SRC=… >). La misma documentación
también aclara que Google es incapaz de seguir enlaces
desde flash, javascript y
parámetros en los enlaces a otras URLs.
En sus intercambios de enlaces muchos webmasters
prefieren usar enlaces "manuales", que
son links comunes que transmiten pagerank pero no permiten a los
programas contabilizar cuántos clicks se hicieron sobre
ellos. Con este mecanismo el webmaster no sabe si el intercambio
es productivo (las estadísticas nos muestran las visitas que
recibimos desde ese intercambio, pero no podemos saber las
visitas que estamos enviando).
Otros webmasters optan por tener un mayor control del
intercambio, e instalan programas de gestión
de intercambios (como ser AWG Trade, Traffic Drive, CJ-Ultra,
TM3, etc). Pero al instalar estos programas, los enlaces desde
sus sitios web dejan de ser seguidos por los robots de los
buscadores
(también llamados crawlers).
La
solución al problema: una técnica
inédita
La solución consiste en incluír en nuestro
sitio enlaces reales tipo anchor (<A
HREF="http://www.sitiodestino.com">). Sin hacer trampas. Tal
cual están programados para seguir todos los robots de
indexación de páginas. Pero usando un código
especial de DHTML que nos permite contar cuántas veces se
hace click en el enlace, sin necesidad de poner en el propio
enlace nada especial…
Anatomía de un sencillo sitio web que implementa esta
solución
Desarrollaremos una implementación de ejemplo
sumamente básica para demostrar el uso de esta
técnica. Para el ejemplo hemos elegido usar PHP y
javascript, aunque es posible hacerlo con cualquier otro lenguaje de
programación. Nuestro pequeño ejemplo se divide
en dos partes:
1) Un sencillo script (un contador sumamente
básico) que nos permite llevar la cuenta de los
clicks.
Este script de ejemplo mantiene la cuenta de los clicks
en un archivo de
texto plano
(cont.txt), como los contadores de visitas más
básicos.
El sólo hecho de abrir este script con un browser
hace que el número guardado en el archivo "cont.txt" se
incremente en uno.
Archivo: contador.php
<?php
// archivo que guarda el numero de hits
$cont = "cont.txt";
$fp = fopen($cont,rw);
$num = fgets($fp,9999);
fclose($fp);
$fp = fopen($cont,w);
$num += 1;
fputs($fp, $num);
fclose($fp);
?>
2) Una página web
conteniendo los links salientes sobre los cuales queremos
controlar la actividad de los usuarios.
Archivo: links.html
<html>
<head>
<title>Página de
Ejemplo</title>
<script language="javascript"
TYPE="text/javascript">
<!–
///////////////////////////////////////////////////////////////////
// (C) 2004, Eduardo Gonzalez Gonzalez
(www.estadisticasweb.com) //
// Este código y scripts adjuntos son cedidos al
dominio
público //
///////////////////////////////////////////////////////////////////
var TRACKfrObj; function TRACKlink(CounterScript) { if
(!document.createElement) {return true};
var TRACKfrDoc; if (!TRACKfrObj &&
document.createElement) {
try {var TRACKfrtemp=document.createElement('iframe');
TRACKfrtemp.setAttribute('id','TRACKframe');
TRACKfrtemp.style.border='0px';
TRACKfrtemp.style.width='0px';
TRACKfrtemp.style.height='0px'; TRACKfrObj =
document.body.appendChild(TRACKfrtemp);
if (document.frames) {TRACKfrObj =
document.frames['TRACKframe']; }}
catch(exception) {TRACKhf='<iframe id=" TRACKframe"
style="'; TRACKhf+='border:0px;';
TRACKhf+='width:0px;'; TRACKhf+='height:0px;';
TRACKhf+='"></iframe>';
document.body.innerHTML+= TRACKhf; TRACKfrObj = new
Object();
TRACKfrObj.document = new Object();
TRACKfrObj.document.location = new Object();
TRACKfrObj.document.location.iframe =
document.getElementById('TRACKframe');
TRACKfrObj.document.location.replace =
function(location) { this.iframe.src = location; }}}
if (navigator.userAgent.indexOf('Gecko') !=-1 &&
! TRACKfrObj.contentDocument)
{setTimeout(' TRACKtrack()',10); return
false;}
// Browser tipo/version NS6
if (TRACKfrObj.contentDocument) {TRACKfrDoc =
TRACKfrObj.contentDocument;}
// Browser tipo/version IE5.5 & IE6
else if (TRACKfrObj.contentWindow) {TRACKfrDoc =
TRACKfrObj.contentWindow.document;}
// Browser tipo/version IE5
else if (TRACKfrObj.document) {TRACKfrDoc =
TRACKfrObj.document;}
else { return true; }
TRACKfrDoc.location.replace(CounterScript); return
false;
}
//–>
</script>
</head>
<body bgcolor="#ffffff">
<br><br><br>
Un link de ejemplo:
<span onClick="TRACKlink('contador.php')"><a
href="http://www.estadisticasweb.com" target="_blank">Visite
EstadisticasWeb.com!</a></span>
<br><br><br>
En el archivo "cont.txt" alojado en el servidor se
encuentra una cifra que indica el número de veces que se
accedió a este link. <br> El link contenido en esta
página es compatible con los crawlers, y especialmente con
Googlebot. Por lo tanto sirve para transmitir
Pagerank.
<br><br><br>
</body>
</html>
EL link utilizado es completamente simple:
<a href="http://www.estadisticasweb.com"
target="_blank">Visite
EstadisticasWeb.com!</a>
Es precisamente el tipo de link que Googlebot (y otros
robots) quieren ver en nuestras páginas
web.
Pero este link html a su vez está "envuelto" por
un tag tipo <span>. Este es un elemento "en línea"
del html (ver manual de html),
que no tiene significación estructural propia, y se usa
comunmente para aplicar estilos CSS. Pero en nuestro caso
utilizamos el método
"onClick" asociado a este elemento <span>, para invocar un
javascript, que realiza la tarea de activar nuestro script
contador de clicks salientes:
<span onClick="TRACKlink('contador.php')">
¿Es esto un link? No parece… ¿verdad?
Pruébalo </span>
La invocación del método "onClick" del
elemento <span> ocurre paralelamente al funcionamiento
normal que tiene el link <a> comprendido dentro del bloque
<span>. Las dos aperturas de documento ocurren al mismo
tiempo e
independientemente una de otra. La página invocada desde
el <a> la veremos cargarse en nuestra pantalla. El script
(contador.php) se abre en una ventana invisible, por lo que no
muestra
ningún contenido, no obstante realiza la función
deseada: incrementa el contador correspondiente.
En cuanto al código javascript, su misión es
generar momentáneamente un iframe en el cual se abre el
script (contador.php en nuestro caso) que le es pasado como
parámetro desde el propio link en el cual deseamos contar
las visitas salientes. El código javascript en este
ejemplo está muy completo, y prevee varias situaciones de
error. A su vez es compatible con diferentes modelos de
browser. No obstente, también es posible realizar esta
tarea mediante algún código javascript más
sencillo (pero con el riesgo de perder
compatibilidad con varios modelos de browsers).
En este artículo me he limitado a describir esta
técnica de cómputo de clicks en enlaces salientes.
La misma está probada y funciona perfectamente bien,
permitiendo computar los clicks salientes desde enlaces que a su
vez son compatibles con Google (transmiten Pagerank).
También suministré un ejemplo de
código completo y absolutamente probado y
funcional.
Con estos elementos los programadores estarán en
condiciones de desarrollar sus programas basados en esta
tecnología, pero adecuando el mecanismo de conteo
según las necesidades de cada programa: posiblemente
usando bases de datos,
pasando al script parámetros que permitan computar
paralelamente los clicks desde muchos enlaces, etc.
Por Ing. Eduardo González
González