Impedindo que robôs rastreiem parte específica de uma página

28

Como webmaster encarregado de um pequeno site que possui um fórum, recebo regularmente reclamações dos usuários de que tanto o mecanismo de pesquisa interno quanto as pesquisas externas (como ao usar o Google) são totalmente poluídas pelas assinaturas de meus usuários (eles estão usando muito tempo assinaturas e isso faz parte da experiência do fórum, porque as assinaturas fazem muito sentido no meu fórum).

Então, basicamente, estou vendo duas opções a partir de agora:

  1. Renderizando a assinatura como uma imagem e quando um usuário clica na "imagem da assinatura", ela é levada para uma página que contém a assinatura real (com os links na assinatura etc.) e essa página é definida como não rastreável pela pesquisa aranhas do motor). Isso consumiria alguma largura de banda e precisaria de algum trabalho (porque eu precisaria de um renderizador HTML produzindo a imagem etc.), mas obviamente resolveria o problema (existem pequenas dicas de que a assinatura não respeitará o esquema de fonte / cor do de qualquer maneira, os usuários, mas meus usuários são muito criativos com suas assinaturas, usando fontes / cores / tamanho personalizados, etc.

  2. Marcar todas as partes da página da Web que contêm uma assinatura como não rastreáveis.

No entanto, não tenho certeza sobre o seguinte: isso é algo que pode ser feito? Você pode marcar partes específicas de uma página da Web como não rastreáveis?

WebbyTheWebbor
fonte

Respostas:

8

Aqui está a mesma resposta que forneci à tag noindex para o Google no Stack Overflow:

Você pode impedir que o Google veja partes da página colocando essas partes em iframes bloqueados pelo 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.

Em vez de usar iframes, você pode carregar o conteúdo do arquivo oculto usando o AJAX. Aqui está um exemplo que usa jquery ajax para fazer isso:

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
fonte
A adição / injeção de controle usando o AJAX ajudará a proibir e impedir o rastreamento do mesmo?
Pranav Bilurkar
Desde que o local do qual o AJAX está buscando esteja bloqueado pelo robots.txt.
Stephen Ostermiller
Por favor, verifique este webmasters.stackexchange.com/questions/108169/… e sugira se houver.
Pranav Bilurkar
Desde que o local do qual o AJAX está buscando esteja bloqueado pelo robots.txt - Por favor, elabore isso.
Pranav Bilurkar
2
O Google penaliza aqueles que ocultam o rastreamento de seu javascript, a fim de evitar abusos. O mesmo vale para iframes?
Jonathan
7

Outra solução é agrupar o sig em uma extensão ou div com o estilo definido como display:nonee, em seguida, usar o Javascript para removê-lo, para que o texto seja exibido para navegadores com o Javascript ativado. Os mecanismos de pesquisa sabem que não será exibido, portanto não devem indexá-lo.

Este bit de HTML, CSS e javascript deve fazê-lo:

HTML:

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

CSS:

.sig {
display:none;
}

javascript:

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

Você precisará incluir uma biblioteca jquery .

paulmorriss
fonte
4
+1 e pensei nisso, mas isso não seria considerado uma forma de "camuflagem" por várias aranhas?
WebbyTheWebbor
3
Não pelo Google: theseonewsblog.com/3383/google-hidden-text
paulmorriss
1
Eu acho que é bastante puro :-)
paulmorriss
Isso poderia, na definição mais estrita, ser considerado camuflagem. No entanto, ele poderia imprimir toda a assinatura com javascript usando um document.write ("") ;. O Google não indexa nada dentro de javascript. support.google.com/customsearch/bin/…
Athoxx
Acredito que o Google possa indexar esses parágrafos, mesmo se eles estiverem ocultos usando CSS. A opção mais segura é não incluir o texto no HTML. (Nós podemos usar JavaScript para injetar o texto em tempo de execução.)
wrygiel
3

Eu tive um problema semelhante, resolvi com css, mas isso também pode ser feito com javascript e jquery.

1 - Criei uma classe que chamarei " disallowed-for-crawlers" e coloquei essa classe em tudo o que eu não queria que o bot do Google visse, ou coloquei dentro de um intervalo com essa classe.

2 - No CSS principal da página, terei algo como

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

3- Crie um arquivo CSS chamado disallow.css e adicione ao robots.txt que não é permitido rastrear, para que os rastreadores não acessem esse arquivo, mas adicione-o como referência à sua página após o css principal.

4- disallow.cssColoquei o código:

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

Você pode jogar com javascript ou css. Eu apenas aproveitei as classes disallow e css. :) espero que ajude alguém.

Rolando Retana
fonte
Não sei se isso funciona porque os rastreadores não acessam o arquivo .css (isso é uma coisa? Desde quando os rastreadores acessam e rastreiam arquivos CSS específicos?) E não simplesmente devido à exibição: nenhum e os rastreadores que entenderem isso não serão exibidos, então eles não o indexam. Mesmo se esse for o caso, o que você faz para realmente exibir o conteúdo para usuários humanos?
Σπύρος Γούλας
O conteúdo é exibido quando a etapa 4 é carregada para o usuário humano, pois eles podem ver esse arquivo (disallow.css). E sobre os robôs que carregam CSS é o que os respeitáveis ​​mecanismos de pesquisa fazem hoje em dia, é assim que eles determinam quando um site é compatível com dispositivos móveis ou não, os rastreadores que não o respeitam não valem a pena se preocupar, os principais mecanismos de pesquisa lêem css e javascript para rastrear páginas, eles fazem isso há cerca de ... quase 6 anos agora? talvez mais.
Rolando Retana
Você pode fornecer fontes que fazem backup dessa reivindicação? Consulte webmasters.stackexchange.com/questions/71546/… e yoast.com/dont-block-css-and-js-files e o mais importante aqui webmasters.googleblog.com/2014/10/…, onde o que você descreve é ​​retratado como má prática.
Σπύρος Γούλας
É uma prática ruim se eu quiser que o Google veja meu site normalmente e bloqueie todo o CSS, e é uma prática ruim porque eles interpretam o CSS, mas nesse caso específico, bloqueio um arquivo específico, não todos os css, OP pergunta sobre como impedir que o Google leia uma seção da página. mas não quero que o Google rastreie essas seções, por isso bloqueio um único CSS (nem todos, apenas um). E para apoiar o que você disse? aquele que os rastreadores lêem JS e CSS? é tão fácil quanto acessar as Ferramentas do Google para webmasters e dar uma olhada em "Buscar como um robô". Você verá como elas lêem css e js.
Rolando Retana
Além disso, no meu caso específico, não é que eu queira fazer algo obscuro com o Google Crawler, apenas não quero que o Google leia uma seção de informações que pode parecer repetitiva em todas as páginas. Como números de telefone, endereços, produtos ou informações relacionadas que não são relevantes para o Google rastrear.
Rolando Retana
2

Uma maneira de fazer isso é usar uma imagem de texto em vez de texto simples.

É possível que o Google seja esperto o suficiente para ler o texto da imagem, por isso pode não ser totalmente à prova de futuro, mas deve funcionar bem por pelo menos um tempo a partir de agora.

Há várias desvantagens nessa abordagem. Se uma pessoa é deficiente visual, é ruim. Se você deseja que seu conteúdo se adapte a dispositivos móveis versus computadores de mesa, é ruim. (e assim por diante)

Mas é um método que atualmente funciona (um pouco).

James Foster
fonte
quão bem isso funciona se você usar alt e título adequadamente?
Jayen
Ainda não tentei, mas parece provável que o Google os rastreie. É uma grande limitação dessa abordagem.
James Foster
1

Isso é facil.

Antes de exibir sua página, você precisa saber se é para um bot, um computador ou um telefone. Você precisa definir o conteúdo adequadamente. Essa é a prática padrão nos dias de hoje e a idade e a funcionalidade principal de alguns CMSs.

Existem várias soluções no SE para redirecionar com base no USER AGENT que podem ser colocadas no seu htaccess. Se isso se adequar ao software do fórum, você poderá executar um código diferente no mesmo banco de dados para fornecer o que o Google precisa sem a palha e os aparamentos.

Como alternativa, você pode colocar uma pequena linha no seu código PHP que faz 'se USER AGENT == Googlebot não mostrar assinaturas'.

Se você realmente não pode fazer isso, pode obter mod_proxy para servir ao bot e usá-lo para remover qualquer coisa que seu código php gere que o bot não precise ver.

Tecnicamente, o Google não aprova que seu mecanismo de pesquisa seja mostrado em uma página diferente da que o visitante normal do site vê; no entanto, até o momento, ele não retirou a BBC e outras pessoas que fornecem conteúdo específico do navegador / IP / visitante dos resultados do mecanismo de pesquisa. . Eles também têm meios limitados para ver se o bot foi "enganado".

A solução alternativa de ocultar conteúdo com CSS para que ele seja reativado por um script também é um pouco de uma área cinzenta. De acordo com as diretrizes das Ferramentas do Google para webmasters de 20/6/11, essa não é uma boa ideia:

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

Pode não ser um tablet lançado em pedra, mas está atualizado e pelo Google.

O truque ocultar o conteúdo não funcionará com a minoria de pessoas que não possuem javascript; isso pode não ser uma grande preocupação; no entanto, aguardar o carregamento do documento e mostrar as assinaturas não será uma experiência de visualização satisfatória. pense que a página foi carregada, ela saltará à medida que as assinaturas ocultas aparecerem e empurrar o conteúdo para baixo na página. Esse tipo de carregamento de página pode ser irritante se você tiver um net-top low-end, mas pode não ser perceptível se você tiver uma máquina de desenvolvedores rápida em uma conexão rápida à Internet.

ʍǝɥʇɐɯ
fonte
6
@ ʍǝɥʇɐɯ: exibir conteúdo diferente, dependendo de quem está acessando a página, é meio desaprovado e pode penalizá-lo no mecanismo de busca, tanto quanto eu o entendo. Eu prefiro a solução JavaScript da paulmorris.
WebbyTheWebbor
@ ʍǝɥʇɐɯ: erf, se a exibição de conteúdo personalizado for o nome do jogo, o JavaScript também será. A última vez que verifiquei a Web em geral não funcionou mais tão bem sem o JavaScript instalado (GMail, FaceBook, Google Docs, estouro de pilha, Google+ - sim, eu já o tenho;) - etc.). Não vejo necessidade de criticar a solução da paulmorris com base na falsa premissa de que o JavaScript não está disponível seria um problema.
WebbyTheWebbor 4/11/16
@ ʍǝɥʇɐɯ: Você pode gostar disso de Matt Cutts (responsável pelo SEO no Google) sobre esse assunto: theseonewsblog.com/3383/google-hidden-text Esse foi o excelente comentário de paulmorris postado em comentário à sua excelente resposta. Sinto muito, mas chamar JavaScript de "bobagem" em um fórum desse tipo está próximo de trollar.
WebbyTheWebbor
... e então recebemos a seguinte pergunta: webmasters.stackexchange.com/questions/16398/… - 'enchimento de palavras-chave' é bobagem. Me desculpe por isso.
ʍǝɥʇɐɯ
Acredito que isso se enquadre em "camuflagem" e, portanto, não é uma boa prática.
Σπύρος Γούλας
0

Não, não há como impedir que robôs rastreiem partes de páginas. É uma página inteira ou nada.

Os snippets nos resultados de pesquisa do Google geralmente são retirados da meta descrição na página. Assim, você pode fazer o Google mostrar uma parte específica da página colocando isso na tag de meta descrição. Com o conteúdo gerado pelo usuário, é difícil obter bons trechos, mas a primeira postagem do segmento provavelmente funcionaria.

A única outra maneira em que posso pensar é usar Javascript. Algo como paulmorriss sugerido pode funcionar, mas acho que os mecanismos de pesquisa ainda indexariam o conteúdo se ele estiver no HTML. Você pode removê-lo do HTML, armazená-lo na string Javascript e adicioná-lo novamente no carregamento da página. Isso fica um pouco complexo, no entanto.

Por fim, um aspecto a ter em mente: se o Google estiver mostrando assinaturas de usuários em seus trechos, decidiu que é a parte mais relevante para a consulta do usuário.

DisgruntledGoat
fonte
1
o problema não é tanto o Google mostrar os códigos do usuário nos snippets quanto essas páginas específicas, que são classificadas no Google em primeiro lugar. A questão aqui é precisamente que o Google pode pensar que os sigs são relevantes quando na verdade não são: quero dizer, é exatamente disso que trata minha pergunta.
WebbyTheWebbor
@ Webby, eu não entendo, por que você não quer que suas páginas sejam altamente classificadas? Você tem alguns exemplos de páginas e consultas para que possamos ver do que você está falando? E se o Google estiver mostrando um sinal nos resultados da pesquisa, é relevante para essa consulta, mesmo que não seja relevante para a própria página.
usar o seguinte
1
Eu não posso dar exemplos, mas eu não quero o meu site / fórum para classificar altamente e faz isso muito bem. O problema é que, entre os resultados da pesquisa (que são todos principalmente para o meu site / fórum, porque é basicamente o site sobre o assunto), quais devem ser as páginas de entrada reais são inundadas pelas assinaturas. Quer dizer, eu não quero realmente fazer o que eu pedi na pergunta. E fotos ou JavaScript serão.
WebbyTheWebbor 04/07
@Webby, suas respostas têm sido um pouco confusas, mas você parece estar implicando que as assinaturas do usuário são todas páginas separadas (URLs) e, portanto, aparecem como resultados separados nas SERPs. Nesse caso, você pode bloquear essas páginas através do robots.txt. Caso contrário, tente a solução de meta descrição que eu postei acima, porque isso certamente diminuirá o problema.
usar o seguinte
0

Você pode colocar a página em um PHP se com um "else" que leva a um captcha que fornece a chave para a parte if.

Realmente não me importo, porque se a credencial do usuário não corresponder na minha página, ela receberá uma página em branco ou será enviada para a página de login.

<?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 deve ser um hash do dia atual ou algo que mude, para que não seja suficiente adicionar valor à sessão.

Escreva no comentário se você quiser que eu adicione um exemplo captcha porque não tenho um agora.

Alfons Marklén
fonte
Esta resposta assume que os sites usam ou o desenvolvedor conhece PHP, o que pode não ser verdade. Além disso, dificulta o acesso ao conteúdo para os usuários, o que não é uma coisa boa.
John Conde
Eu posso comprar que nem todo mundo sabe PHP, mas um captcha pode ser "qual é a cor da grama", mesmo pepole cego sabe disso.
Alfons Marklén
-3

Aparentemente, <! - googleoff: all -> e <! - googleon: all -> fazem o que você deseja.

Leia mais 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-fficient-parts-of-your-page/

Luke Madhanga
fonte
4
Não. Googleoff e Googleon são suportados apenas pelo Google Search Appliance. O Googlebot os ignora para pesquisa na web. Referência: você pode usar os comentários do googleon e do googleoff para impedir que o Googlebot indexe parte de uma página? Você vinculou à documentação do Google Search Appliance e um comentário ao artigo ao qual vinculou também diz que ele não funciona no Googlebot.
Stephen Ostermiller
@StephenOstermiller oh right! Darn
Luke Madhanga