tag para name metadatos for etiquetas description content buscadores search-engine website-metrics

search-engine - name - metadatos html para buscadores



¿Contando el número de visitas para una página que ignora los motores de búsqueda? (6)

La razón por la que Stack Overflow tiene conteos de vista precisos es que solo cuenta cada vista / usuario una vez.

La aplicación de contador de visitas de terceros (y la estadística web) a menudo filtra los motores de búsqueda y los muestra en una ventana / pestaña / sección separada.

Observé que StackOverflow tiene un conteo de visitas para cada pregunta y que estos números de vista son bastante bajos y precisos.

Tengo algo similar en uno de mis sitios. Básicamente, registra un "hit" cada vez que la página se carga en el código de back-end. Lamentablemente, también hace esto para los resultados de los motores de búsqueda que proporcionan números inflados y poco precisos.

Supongo que una forma de no contar un robot sería hacer la vista contando con una llamada AJAX una vez que la página se haya cargado, pero estoy seguro de que hay otras formas mejores de ignorar los motores de búsqueda en los contadores de visitas y al mismo tiempo dejarlos entrar. rastrea tu sitio. ¿Conoce alguna?


Para resolver este problema, implementé un filtro simple que miraría el encabezado User-Agent en la solicitud HTTP y lo compararía con una lista de robots conocidos.

Obtuve la lista de robots de www.robotstxt.org . Se puede descargar en un formato de texto simple que se puede analizar fácilmente para generar automáticamente la "lista negra".


Realmente no necesita usar AJAX, solo use JavaScript para agregar un iFrame fuera de la pantalla. MANTENLO SIMPLE

<script type="javascript"> document.write(''<iframe src="myLogScript.php" style="visibility:hidden" width="1" height="1" frameborder="0">''); </script>


Tendrás que hacer lo que dijiste en tu pregunta con AJAX. O excluya las cadenas de User-Agent conocidas como motores de búsqueda. La única forma segura de detener bots es con AJAX.


Una llamada AJAX lo hará, pero generalmente los motores de búsqueda no cargarán imágenes, javascript o archivos CSS, por lo que puede ser más fácil incluir uno de esos archivos en la página, y pasar la URL de la página que desea registrar una solicitud como un parámetro en la solicitud de archivo.

Por ejemplo, en la página ...

http://www.example.com/example.html

Puede incluir en la sección de la cabeza

<link href="empty.css?log=example.html" rel="stylesheet" type="text/css" />

Y haga que su servidor registre la solicitud y luego devuelva un archivo css vacío. El mismo enfoque se aplicaría a JavaScript o al archivo de imagen, aunque en todos los casos querrá observar cuidadosamente qué almacenamiento en caché podría llevarse a cabo.

Otra opción sería eliminar los motores de búsqueda en función de su agente de usuario . Hay una gran lista de posibles agentes de usuario en http://user-agents.org/ para que comiences. Por supuesto, puedes ir por el otro lado, y solo contar las solicitudes de cosas que sabes que son navegadores web (que cubren IE, Firefox, Safari, Opera y esta novedosa cosa de Chrome te daría el 99% del camino).

Aún más fácil sería utilizar una herramienta de análisis de registros como awstats o un servicio como Google Analytics , que ya han resuelto este problema.


Una extensión de la respuesta de Matt Sheppard podría ser algo como lo siguiente:

<script type="text/javascript"> var thePg=window.location.pathname; var theSite=window.location.hostname; var theImage=new Image; theImage.src="/test/hitcounter.php?pg=" + thePg + "?site=" + theSite; </script>

que se puede conectar a un encabezado de página o plantilla de pie de página sin necesidad de sustituir el nombre de la página del lado del servidor. Tenga en cuenta que si incluye la cadena de consulta (window.location.search), una versión robusta de esto debería codificar la cadena para evitar que los malhechores elaboren solicitudes de página que aprovechen vulnerabilidades basadas en cosas raras en las URL. Lo bueno de esto frente a una etiqueta <img> o <iframe> regular es que el usuario no verá una x roja si hay un problema con la secuencia de comandos hitcounter. En algunos casos, también es importante conocer la URL que vio el navegador, antes de las reescrituras, etc. que ocurren en el servidor, y esto le da eso. Si lo desea de ambas formas, agregue otro parámetro del lado del servidor que inserte esa versión del nombre de la página en la cadena de consulta también.

Un ejemplo de los archivos de registro de una prueba de esta página:

10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/testpage.html HTTP/1.1" 200 306 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16" 10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/hitcounter.php?pg=/test/testpage.html?site=www.home.***.com HTTP/1.1" 301 - "http://www.home.***.com/test/testpage.html" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16"