Desativar ou contornar a detecção de recursos para o Googlebot (ao servir o aplicativo JS para rastreadores)

Tenho tentado fazer o Discourse servir totalmente o aplicativo JS para o Googlebot - estou muito perto.

Por cortesia de @pfaffman e executando o código abaixo (no console do rails), consegui fazer o aplicativo JS aparecer ao usar o Chrome e falsificar o user agent para googlebot ou googlebot smartphone.

SiteSetting.non_crawler_user_agents="trident|webkit|gecko|chrome|safari|msie|opera|goanna|discourse"+"rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor|lighthouse"

No entanto, quando testo com a ferramenta mobile-friendly do Google (ou inspeção de URL no Google Search Console), ele me dá uma captura de tela em branco com o HTML abaixo.

O Bing é semelhante, mas com eles, ele mostra o conteúdo. Acho que o Bing mostra o conteúdo porque seu crawler não é “mobile”. Postagem relevante aqui por @sam

De acordo com @david e esta postagem, parece que a “detecção de recursos” é a culpada.

Estou cautelosamente otimista de que há uma solução simples. A cada 10-20 tentativas ao usar a ferramenta, o Googlebot renderiza o APP corretamente.

Minha teoria é que, como o Googlebot é notório por não baixar todos os recursos ao acessar uma página, aquele JS específico (que tem a detecção de recursos e causa o revert) não é carregado e, portanto, a página fica boa.

Então, em conclusão, como alguém desabilitaria a detecção de recursos para o Googlebot (ou, se for mais fácil, para todos os crawlers/bots)?

Editar Só por garantia, se eu estiver usando a terminologia errada, quando “detecção de recursos” é mencionado no meta, isso se refere à detecção de navegador? (talvez com arquivos como browser-detect.js e outras dependências)

Ou “detecção de recursos” é uma frase ampla para o que o Discourse faz quando tenta entender a tecnologia que está tentando acessar o aplicativo?

Existe algum motivo para você querer servir a versão JS para o Googlebot? O Google provavelmente não conseguirá encontrar visualizações de lista paginadas, incluindo a página inicial paginada e tópicos que têm mais do que um certo número de postagens. Na visualização do bot, as listas de tópicos são rastreáveis, mas o Googlebot provavelmente não acionará a rolagem infinita.

Fico feliz que você perguntou, sim, acho que é o motivo da minha “penalidade leve” do Google

Permita-me elaborar.

Tivemos uma atualização de site muito desleixada por volta de setembro/outubro de 2019, o site principal despencou naquele momento.

Nunca nos recuperamos. O site nunca esteve melhor em termos de SEO. Claro, não é perfeito, mas estamos a anos-luz de alguns concorrentes. Sites que usam nossas imagens e textos de muitos anos nos superam em páginas. Estamos na 3ª e eles talvez estejam no topo da 2ª página.

Já passei por inúmeros blogs, vídeos, posts de SEO e até tive algumas trocas com John Mueller (no Reddit).

O máximo que consegui dele foi que poderiam ser “problemas de qualidade”. Melhoramos drasticamente o site principal desde 1º de janeiro deste ano. Nem um pingo no tráfego orgânico.

Discourse: Instalei em 2013 e esqueci. Mal verificava seu tráfego.

Se você olhar as análises do site principal, verá uma queda acentuada no final do gráfico. Foi quando comecei a trabalhar no Discourse.

Ao tentar o prerender.io no discourse, a classificação do site principal ficava uma bagunça. Às vezes, subindo 10-15 posições durante a noite, depois voltando. (Desde então parei o prerender, pois eles não conseguiam renderizar o menu principal, login, etc.)

Pelo que li online, isso é um sinal de que o Google não sabe onde te colocar. Dizem que falta só um “pouquinho” e você está do lado bom do algoritmo.

Nada do que fizemos nos últimos 3 anos desencadeou essas flutuações nos SERPs.

(Mexendo na ferramenta de desautorização do Google, limpando código, URLs limpas, estrutura do site, links internos, social, conteúdo, etc.)

Você pode argumentar, por que o Google não me penalizou em 2018? (você já tinha o discourse no subdomínio então também)

Bem, acho que foi uma multiplicidade de fatores únicos do site, sua história, perfil de links. que o fizeram despencar no final de 2019. Parece que o Google reorganizou a classificação do site e talvez tenha dado mais peso aos URLs do discourse do que anteriormente.

E o detalhe é… eu amo o Discourse. Especialmente agora que tenho passado mais tempo no meta, todos esses plugins e recursos legais que eu nem imaginava que existiam. Wiki, pagamentos por assinatura, índice, e agora o chat!!

Então, sair do discourse não é realmente uma opção, muito investido neste ponto.

Considerei isso e estou disposto a arriscar. Sei que não será perfeito, mas pelo que li e assisti, o Google se tornou muito bom em entender JS ultimamente.

Eles até descontinuaram o esquema de rastreamento ajax

Os tempos mudaram. Hoje, desde que você não esteja bloqueando o Googlebot de rastrear seus arquivos JavaScript ou CSS, geralmente somos capazes de renderizar e entender suas páginas da web como navegadores modernos.

Nota lateral: O Discourse tem uma configuração para rastreamento ajax - acho que isso tem que acabar eventualmente.


Então o plano é servir o aplicativo para o Google, fazer o meu melhor para corrigir quaisquer problemas de SEO que possam surgir e aproveitar o pico de tráfego.

Posso então relatar os resultados no meta e defender que o Discourse considere otimizar o JS para o Google.

Por exemplo, talvez algo como isso (do blog do Google) ajude com as preocupações de paginação e rolagem.

E manter a versão não-crawler para navegadores antigos.

Se me permite acrescentar… :smirk:

Antes mesmo de enviar a versão em JS para o Google, eu estava mexendo nela.

Testei o envio da versão em JS para o Google por volta do início de abril, mais ou menos. Lembro que ele retornava um resultado na maioria das vezes (mesmo que parecesse quebrado). Usando a ferramenta mobile do Google.

Pensei que pudesse ser este commit - fiz as edições no código, reiniciei e o mesmo comportamento.

Talvez alguém se lembre de um PR ou commit nos últimos meses que possa ter alterado a detecção de navegador e/ou crawler?

Edição Desculpem por todas as atualizações, quanto mais informação, melhor, certo?

Enquanto tentava o prerender no mês passado, o Google acabou adicionando 2000 URLs à cobertura do fórum. (principalmente estes URLs)

Todos foram servidos em 0,005 segundos, o prerender tinha os URLs em cache e prontos para o googlebot acessar. Então ele pegou todos rapidamente.

O ponto é que, talvez o crawler tenha se “acostumado muito” com o sem JS e alocado recursos para obter essas 2k páginas.

Então agora ele está acessando o site dessa maneira até que descubra as coisas (e precise acessar com mais JS), é apenas uma teoria.

Você estava trabalhando em algo que mudou a forma como o Discourse é rastreado, como tentar usar o prerender nele então?

Se você verificar seu relatório de páginas de destino no GA, ele fornece alguma pista sobre qual parte do site foi afetada?


Para o site principal, se John Muller sugeriu que há problemas de qualidade, eu revisaria a documentação de qualidade deles e me perguntaria se alguma delas se aplica.

De uma olhada rápida, você tem cadeias de redirecionamento do site de 2019 que podem ser mais longas do que o Google consegue rastrear.

Um candidato a uma penalidade súbita é que os URLs do site de 2019 têm 6 redirecionamentos, mas o Google diz para mantê-los “abaixo de 5” ou eles podem não seguir os redirecionamentos. Isso pode ter feito parecer ao Google que as páginas antigas desapareceram da Web.

Exemplo:

curl -sSL -D - http://flynumber.com/virtual-phone-number/united-states_alexandria_1-318 -o /dev/null -H 'User-Agent: header_bot'

Os redirecionamentos são provavelmente os mais fáceis de corrigir. Em vez de fazê-los assim:

/a/b/c/d/e/final-destination

Eu faria assim:

/a/final-destination
/b/final-destination
/c/final-destination
/d/final-destination
/e/final-destination

(Parece que você também tem páginas de entrada e sinonimização automática, mas eu tentaria corrigir o problema mais simples primeiro, já que isso pode ser suficiente.)

Obrigado, Josh, aprecio o feedback aqui.

Boa observação e, embora mal executado, levando muitos meses, o Google parece ter descoberto quais páginas significam o quê.

Em outras palavras, eventualmente, comecei a ver cada vez mais as páginas para as quais fiz 301 para as palavras-chave usadas nas páginas antigas.

Isso faz muito sentido e verei como posso implementar isso. Atualmente, o Search Console não mostra o rastreador chegando a 301 com frequência. Parece que quando a classificação melhora, eles seguem mais 301. Causalidade sem correlação, talvez.


Não é de forma alguma uma crítica ao Discourse - simplesmente não me convenço facilmente com “milhares de usuários do Discourse têm ótimo tráfego orgânico”.

O Google também não vai nos dizer.

Devemos sempre lembrar que o Google é um algoritmo, eles não estão olhando para isso com olhos humanos.

Embora ambas as versões compartilhem conteúdo semelhante, e o Google saiba que não é cloaking malicioso, eles ainda precisam ajustar a classificação.

Uma versão parece muito melhor, funciona melhor e dá alguma noção de estrutura de links internos. A outra é um feed RSS glorificado.

O Google não tem ideia de que tenho este fórum sofisticado que funciona em todos os dispositivos [modernos], realmente incentiva a discussão e é uma das coisas mais legais que a internet já criou.

Sempre gosto de usar o link do-follow “Powered by discourse” na versão do rastreador. (apenas porque é fácil)

Novamente, sei que não é malicioso, mas você deve olhar para isso através dos olhos do Google. Você, FlyNumber (não https://community.cloudflare.com/), está nos dando esta versão do rastreador com um link externo que você não mostra aos navegadores normais.

Eu poderia totalmente ver o algoritmo percebendo o que está acontecendo e ignorando o link externo para o domínio cloudflare (já que é uma autoridade tão grande)

Não é como se o que o Google aplica ao Cloudflare se aplicasse a mim.

Alguém pagou a você por este link externo que você mostra aos bots (mas não quer mostrar aos usuários normais?) é mais sobre como eles podem olhar para o site. Não estou dizendo que é isso - mas é uma possibilidade que você vai querer eliminar.

Em termos mais simples, a versão do rastreador não tem um menu ou qualquer estrutura real.

Esse é o conteúdo que o algoritmo acha que você quer servir aos usuários finais.

De uma perspectiva muito geral, não consigo ver o algoritmo recompensando isso.

Talvez seja hora de começarmos a considerar uma reforma completa da versão do rastreador. Pelo menos adicione o menu principal e os tópicos sugeridos na parte inferior.

Atualização interessante: O Google adicionou “JSON” aos “tipos de arquivo” nas estatísticas de rastreamento da minha instância do Discourse. “Javascript” é um “tipo de arquivo” separado.

Acompanharei de perto, mas ainda adoraria que isso fosse renderizado corretamente na ferramenta do Google.

Estou começando a pensar que minha lógica estava falha desde o início. Isso explicaria por que ninguém respondeu - talvez não haja nada de errado.

Aqui está um novo artigo sobre como é normal o Google mostrar uma página em branco na captura de tela

Agora consigo ver o HTML “rastreado” da página inicial, esta é a versão indexada, não do “Teste ao vivo” - mostra a página completa. Tenha em mente que o Google descobriu isso enquanto servia o aplicativo JS completo para eles.

O interessante é que eles desceram até cerca de 27 posts na página inicial em termos de indexação. Portanto, a coisa da rolagem infinita é algo que o Google entende.

Não sei se ajudou, mas desmarquei a configuração ajax nas configurações de administrador. Isso fez com que o Google encontrasse URLs como a abaixo (e servisse a versão do rastreador) - desmarquei, e agora esse URL mostrará a versão JS

https://discuss.flynumber.com/t/japan-phone-numbers-disconnect-notice/2351?_escaped_fragment_=

Agora, tudo o que preciso descobrir é como posso limpar esses URLs canônicos extras que o discourse cria para as páginas de usuário.

Então, depois de pelo menos um mês servindo a versão SPA (versão Full JS) do Discourse, voltei para a versão crawler.

Você pode consultar meu histórico de postagens, mas eu estava argumentando que o Google poderia entender a versão JS e classificá-la melhor do que a versão crawler. Eu estava errado.

Ei @j127, você estava certo! (Vou te enviar uma mensagem privada, meu bom senhor)

Parece que o Google descobriu o site, mas apenas o classificou mais ou menos da mesma forma (se não ligeiramente inferior).

A versão crawler também foi atualizada em abril/maio em relação às cores dos links, formato, etc., então isso é uma boa ajuda.

Na minha humilde opinião, se adicionássemos um menu simples e os “tópicos sugeridos” à versão crawler, faria uma boa diferença para o SEO de todos.

Fora isso, eu só queria divulgar isso caso alguém estivesse curioso.

Ótimo trabalho, pessoal!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.