Evitar que los robots rastreen parte específica de una página

28

Como webmaster a cargo de un sitio pequeño que tiene un foro, recibo regularmente quejas de los usuarios de que tanto el motor de búsqueda interno como las búsquedas externas (como cuando se usa Google) están totalmente contaminadas por las firmas de mis usuarios (están usando mucho tiempo). firmas y eso es parte de la experiencia del foro porque las firmas tienen mucho sentido en mi foro).

Así que básicamente estoy viendo dos opciones a partir de ahora:

  1. Renderizando la firma como una imagen y cuando un usuario hace clic en la "imagen de la firma" se la lleva a una página que contiene la firma real (con los enlaces en la firma, etc.) y esa página se establece como no rastreable por búsqueda arañas de motor). Esto consumiría algo de ancho de banda y necesitaría algo de trabajo (porque necesitaría un renderizador HTML que produzca la imagen, etc.) pero obviamente resolvería el problema (hay pequeños inconvenientes en que la firma no respetaría el esquema de fuente / color de los usuarios, pero mis usuarios son muy creativos con sus firmas de todos modos, usan fuentes / colores / tamaños personalizados, etc., por lo que no es un gran problema).

  2. Marcar cada parte de la página web que contiene una firma como no rastreable.

Sin embargo, no estoy seguro de lo siguiente: ¿es algo que se puede hacer? ¿Puedes marcar partes específicas de una página web como no rastreables?

WebbyTheWebbor
fuente

Respuestas:

8

Aquí está la misma respuesta que proporcioné a la etiqueta noindex para google en Stack Overflow:

Puede evitar que Google vea partes de la página colocando esas partes en iframes que están bloqueados por robots.txt.

robots.txt

Disallow: /iframes/

index.html

This text is crawlable, but now you'll see 
text that search engines can't see:
<iframe src="/iframes/hidden.html" width="100%" height=300 scrolling=no>

/iframes/hidden.html

Search engines cannot see this text.

En lugar de usar iframes, puede cargar el contenido del archivo oculto usando AJAX. Aquí hay un ejemplo que usa jquery ajax para hacerlo:

his text is crawlable, but now you'll see 
text that search engines can't see:
<div id="hidden"></div>
<script>
    $.get(
        "/iframes/hidden.html",
        function(data){$('#hidden').html(data)},
    );
</script>
Stephen Ostermiller
fuente
¿Agregar / inyectar control usando AJAX ayudará a no permitir y evitar que se rastree lo mismo?
Pranav Bilurkar
Siempre que la ubicación desde la que se obtiene el AJAX esté bloqueada por robots.txt.
Stephen Ostermiller
¿Podrías consultar este webmasters.stackexchange.com/questions/108169/… y sugerir si hay alguno?
Pranav Bilurkar
Siempre que la ubicación desde la que se obtiene el AJAX esté bloqueada por robots.txt, explique al respecto.
Pranav Bilurkar
2
Google penaliza a quienes ocultan su javascript para que no se rastree, a fin de evitar abusos. ¿Es lo mismo cierto para los iframes?
Jonathan
7

Otra solución es envolver el sig en un span o div con un estilo establecido en display:noney luego usar Javascript para eliminarlo, de modo que el texto se muestre para los navegadores con Javascript activado. Los motores de búsqueda saben que no se mostrará, así que no deberían indexarlo.

Este bit de HTML, CSS y JavaScript debería hacerlo:

HTML:

<span class="sig">signature goes here</span>

CSS:

.sig {
display:none;
}

javascript:

<script type="text/javascript"> 
$(document).ready(function()
  {
      $(".sig").show();
  }
</script>

Deberá incluir una biblioteca jquery .

Paulmorriss
fuente
44
+1 y lo pensé, pero ¿no sería eso una forma de "encubrimiento" por parte de varias arañas?
WebbyTheWebbor
3
No por Google: theseonewsblog.com/3383/google-hidden-text
paulmorriss
1
Creo que es bastante bueno :-)
paulmorriss
Esto podría, en la definición más estricta, considerarse encubrimiento. Sin embargo, podría imprimir toda la firma con javascript usando document.write ("") ;. Google no indexa nada dentro de javascript. support.google.com/customsearch/bin/…
Athoxx
Creo que Google podría indexar dichos párrafos, incluso si están ocultos mediante CSS. La opción más segura es no incluir el texto en el HTML en absoluto. (Podemos usar JavaScript para inyectar el texto en tiempo de ejecución.)
wrygiel
3

Tuve un problema similar, lo resolví con css pero también se puede hacer con javascript y jquery.

1 - Creé una clase que llamaré "disallowed-for-crawlers " y colocaré esa clase en todo lo que no quería que el robot de Google viera, o colóquela dentro de un lapso con esa clase.

2 - En el CSS principal de la página tendré algo como

.disallowed-for-crawlers {
    display:none;
}

3- Cree un archivo CSS llamado disallow.css y agréguelo al robots.txt para que no se pueda rastrear, por lo que los rastreadores no accederán a ese archivo, pero lo agregarán como referencia a su página después del CSS principal.

4- En disallow.csscoloqué el código:

.disallowed-for-crawlers {
    display:block !important;
}

Puedes jugar con javascript o css. Acabo de aprovechar las clases de no permitir y css. :) espero que ayude a alguien.

Rolando Retana
fuente
No estoy seguro de que esto funcione debido a que los rastreadores no acceden al archivo .css (¿es esto una cosa? ¿Desde cuándo los rastreadores acceden y rastrean archivos css específicos?) Y no simplemente debido a la visualización: ninguno y los rastreadores que entienden que no se mostrarán No lo indexan. Incluso si este es el caso, ¿qué haces para mostrar el contenido a los usuarios humanos?
Σπύρος Γούλας
El contenido se muestra cuando se carga el paso 4 para el usuario humano, ya que se les permite ver ese archivo (disallow.css). Y sobre los robots que cargan CSS, eso es lo que hacen los motores de búsqueda respetables hoy en día, así es como determinan cuándo un sitio web es compatible con dispositivos móviles o no, no vale la pena preocuparse de los rastreadores que no lo respetan, los principales motores de búsqueda leen CSS y JavaScript para rastrear páginas, lo han estado haciendo durante ... ¿casi 6 años? quizás más.
Rolando Retana el
¿Puede proporcionar fuentes que respalden esa afirmación? Consulte webmasters.stackexchange.com/questions/71546/… y yoast.com/dont-block-css-and-js-files y, lo más importante, aquí webmasters.googleblog.com/2014/10/… donde se describe lo que describe Como mala práctica.
Σπύρος Γούλας
Es una mala práctica si quisiera que Google vea mi sitio web normalmente y bloqueo todo el CSS, y es una mala práctica porque interpretan el CSS, pero en este caso específico bloqueo un archivo específico, no todo el CSS, OP pregunta sobre cómo evitar que google lea una sección de la página. pero no quiero que Google rastree esas secciones, así que bloqueo un solo CSS (no todos, solo uno). ¿Y para respaldar lo que dijiste? el que los rastreadores leen JS y CSS? es tan fácil como ir a las Herramientas para webmasters de Google y echar un vistazo a "Explorar como un robot", allí verá cómo leen css y js.
Rolando Retana
Además, en mi caso específico, no es que quiera hacer algo sospechoso con Google Crawler, simplemente no quiero que Google lea una sección de información que puede parecer repetitiva en todas las páginas. Al igual que los números de teléfono, direcciones, productos relacionados o información que no es relevante para que Google rastree.
Rolando Retana
2

Una forma de hacerlo es usar una imagen de texto lugar de texto sin formato.

Es posible que Google finalmente sea lo suficientemente inteligente como para leer el texto de la imagen, por lo que podría no estar completamente preparado para el futuro, pero debería funcionar bien por lo menos durante un tiempo a partir de ahora.

Hay un montón de desventajas en este enfoque. Si una persona tiene discapacidad visual, es malo. Si desea que su contenido se adapte a dispositivos móviles en lugar de computadoras de escritorio, es malo. (y así)

Pero es un método que actualmente (algo) funciona.

James Foster
fuente
¿Qué tan bien funciona esto si usa alt & title tage apropiadamente?
Jayen
No lo he intentado, pero parece probable que Google los rastree. Es una limitación importante de este enfoque.
James Foster, el
1

Esto es facil.

Antes de publicar su página, necesita saber si se trata de un bot, una computadora o un teléfono. Luego debe configurar el contenido en consecuencia. Esta es una práctica estándar en la actualidad y la funcionalidad principal de algunos CMS.

Hay muchas soluciones en SE para hacer la redirección basada en AGENTE DE USUARIO que se puede poner en su acceso. Si esto se adapta a su software de foro, entonces puede ejecutar un código diferente en la misma base de datos para entregar lo que Google necesita sin la paja y los recortes.

Alternativamente, puede poner una pequeña línea en su código PHP que haga un 'si USUARIO AGENTE == Googlebot entonces no muestra firmas'.

Si realmente no puede hacer eso, puede obtener mod_proxy para servir al bot y usarlo para eliminar cualquier cosa que genere su código php que el bot no necesite ver.

Técnicamente, Google no aprueba que su motor de búsqueda muestre una página diferente a la que ve el visitante normal del sitio, sin embargo, hasta la fecha, no han eliminado a la BBC ni a otros que proporcionan contenido específico del navegador / IP / visitante de los resultados de su motor de búsqueda. . También tienen medios limitados para ver si su bot ha sido 'estafado'.

La solución alternativa de ocultar contenido con CSS para que un script vuelva a habilitarla también es un poco gris. De acuerdo con sus propias directrices de Herramientas para webmasters de 20/6/11, esta no es una buena idea:

http://www.google.com/support/webmasters/bin/answer.py?answer=66353

Puede que no sea una tableta moldeada en piedra, pero está actualizada y según Google.

El truco para ocultar el contenido no funcionará con la minoría de personas que no tienen JavaScript, esto puede no ser una gran preocupación, sin embargo, esperar a que se cargue el documento y luego mostrar las firmas no será una experiencia de visualización satisfactoria como lo hará cree que la página se ha cargado, luego saltará cuando aparezcan las firmas ocultas para luego empujar el contenido hacia abajo. Este tipo de carga de página puede ser irritante si tiene una red superior de gama baja, pero puede no ser notable si tiene una máquina rápida de desarrolladores con una conexión rápida a Internet.

ʍǝɥʇɐɯ
fuente
66
@ ʍǝɥʇɐɯ: servir contenido diferente dependiendo de quién está accediendo a la página está mal visto y puede penalizarte en el motor de búsqueda hasta donde yo entiendo. Prefiero la solución JavaScript de Paulmorris.
WebbyTheWebbor
@ ʍǝɥʇɐɯ: erf, si servir contenido personalizado es el nombre del juego, también lo es JavaScript. La última vez que revisé la Web en general ya no funcionaba tan bien sin JavaScript instalado (GMail, FaceBook, Google Docs, desbordamiento de pila, Google+, sí, ya lo tengo;), etc.). No veo la necesidad de criticar la solución de Paulmorris basada en la falsa premisa de que JavaScript no está disponible sería un problema.
WebbyTheWebbor
@ ʍǝɥʇɐɯ: Puede que le guste esto de Matt Cutts (a cargo de SEO en Google) sobre ese mismo tema: theseonewsblog.com/3383/google-hidden-text Ese fue el excelente comentario de Paulmorris publicado en comentario a su excelente respuesta. Lo siento, pero llamar a JavaScript "tontería" en ese foro está cerca de trolling.
WebbyTheWebbor
... y luego tenemos esta pregunta: webmasters.stackexchange.com/questions/16398/… - 'relleno de palabras clave' es una tontería. Lo siento por eso.
ʍǝɥʇɐɯ
Creo que esto cae bajo "encubrimiento" y, por lo tanto, no es una buena práctica.
Σπύρος Γούλας
0

No, no hay forma de evitar que los robots rastreen partes de las páginas. Es una página entera o nada.

Los fragmentos en los resultados de búsqueda de Google generalmente se toman de la meta descripción en la página. Por lo tanto, puede hacer que Google muestre una parte específica de la página poniéndola en la etiqueta de meta descripción. Con el contenido generado por el usuario es difícil obtener buenos fragmentos, pero tomar la primera publicación del hilo probablemente funcionaría.

La única otra forma en que puedo pensar es usar Javascript. Algo como Paulmorriss sugirió puede funcionar, pero creo que los motores de búsqueda aún indexarían el contenido si está en el HTML. Puede eliminarlo del HTML, almacenarlo en una cadena Javascript y luego agregarlo nuevamente en la carga de la página. Sin embargo, esto se vuelve un poco complejo.

Finalmente, una cosa a tener en cuenta: si Google muestra las firmas de los usuarios en sus fragmentos, ha decidido que esa es la parte más relevante para la consulta del usuario.

Cabra descontento
fuente
1
El problema no es tanto que Google muestre las señas de los usuarios en sus fragmentos, sino que estas páginas específicas obtengan esa clasificación alta en Google en primer lugar. El problema aquí es precisamente que Google puede pensar que los signos son relevantes cuando en realidad no lo son: quiero decir, de eso se trata exactamente mi pregunta.
WebbyTheWebbor
@Webby, no entiendo, ¿por qué no quieres que tus páginas tengan una clasificación alta? ¿Tiene algunas páginas de ejemplo y consultas para que podamos ver de qué está hablando? Y si Google muestra una firma en los resultados de búsqueda, entonces es relevante para esa consulta de búsqueda, incluso si no es relevante para la página en sí.
DisgruntledGoat
1
No puedo dar ejemplos, pero yo no quiero que mi sitio / foro para los primeros puestos y lo hace muy bien. El problema es que entre los resultados de búsqueda (que en su mayoría son principalmente para mi sitio / foro porque es básicamente el sitio sobre el tema), lo que deberían ser las páginas de entrada reales están inundadas de firmas. Es decir, yo no realmente quiero hacer lo que le pedía en la pregunta. Y fotos o JavaScript va a ser.
WebbyTheWebbor
@Webby, sus respuestas han sido un poco confusas, pero parece estar insinuando que sus firmas de usuario son todas páginas separadas (URL) y, por lo tanto, aparecen como resultados separados en SERP. En cuyo caso, puede bloquear esas páginas a través de robots.txt. De lo contrario, pruebe la solución de metadescripción que publiqué anteriormente, porque eso seguramente mitigará el problema.
DisgruntledGoat
0

Puede poner la página en un PHP si con un "else" que conduzca a un captcha que proporcione la clave para la parte if.

Realmente no me importa porque si la credencial del usuario no coincide en mi página, obtiene una página en blanco o se envía a la página de inicio de sesión.

<?php
session_start();

if(empty($_SESSION['captcha']) or $_SESSION['captcha'] != $key){
    header("Location: captcha.php");
}

if(!empty($_SESSION['captcha']) and $_SESSION['captcha'] == $key){

"the page"

}
?>

$key debería ser un hash del día actual o algo que cambie, por lo que no es suficiente agregar el valor a la sesión.

Escribe el comentario si quieres que agregue un captcha de ejemplo porque no tengo uno ahora.

Alfons Marklén
fuente
Esta respuesta supone que los sitios web usan o que el desarrollador conoce PHP, lo que puede no ser cierto. Además, dificulta el acceso al contenido para los usuarios, lo que no es bueno.
John Conde
Puedo comprar que no todos conocen PHP, pero un captcha puede ser "cuál es el color de la hierba", incluso los ciegos lo saben.
Alfons Marklén
-3

Aparentemente, <! - googleoff: all -> y <! - googleon: all -> hacen lo que quieren.

Más información https://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/admin_crawl/preparing.html#1076243

https://perishablepress.com/tell-google-to-not-index-certain-parts-of-your-page/

Luke Madhanga
fuente
44
No. Googleoff y Googleon solo son compatibles con Google Search Appliance. Googlebot los ignora para la búsqueda web. Referencia: ¿Puedes usar los comentarios de googleon y googleoff para evitar que Googlebot indexe parte de una página? Se vinculó a la documentación de Google Search Appliance y un comentario sobre el artículo al que se vinculó también dice que no funciona para Googlebot.
Stephen Ostermiller
@StephenOstermiller ¡oh cierto! Darn
Lucas Madhanga