Impedire ai robot di eseguire la scansione di parti specifiche di una pagina


28

Come webmaster responsabile di un minuscolo sito che ha un forum, ricevo regolarmente lamentele da parte degli utenti che sia il motore di ricerca interno che le ricerche esterne (come quando usano Google) sono totalmente inquinate dalle firme dei miei utenti (stanno usando a lungo firme e questo fa parte dell'esperienza del forum perché le firme hanno molto senso nel mio forum).

Quindi sostanzialmente sto vedendo due opzioni per ora:

  1. Rendering della firma come immagine e quando un utente fa clic su "immagine della firma", viene portato a una pagina che contiene la firma reale (con i collegamenti nella firma, ecc.) E tale pagina viene impostata come non scansionabile dalla ricerca ragni del motore). Ciò consumerebbe un po 'di larghezza di banda e richiederebbe un po' di lavoro (perché avrei bisogno di un renderer HTML che produce l'immagine ecc.) Ma ovviamente risolverebbe il problema (ci sono piccoli trucchi in quanto la firma non rispetterebbe lo schema di font / colore di gli utenti, ma i miei utenti sono comunque molto creativi con le loro firme, usando caratteri / colori / dimensioni personalizzati ecc. quindi non è un grosso problema).

  2. Contrassegnare ogni parte della pagina Web che contiene una firma come non scansionabile.

Tuttavia non sono sicuro del futuro: è qualcosa che si può fare? Puoi semplicemente contrassegnare parti specifiche di una pagina Web come non scansionabili?

Risposte:


8

Ecco la stessa risposta che ho fornito al tag noindex per google su Stack Overflow:

Puoi impedire a Google di vedere parti della pagina inserendo quelle parti in iframe che sono bloccate da 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.

Invece di usare iframe, puoi caricare il contenuto del file nascosto usando AJAX. Ecco un esempio che utilizza jquery ajax per farlo:

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>

L'aggiunta / iniezione del controllo tramite AJAX contribuirà a non consentire e impedire la scansione dello stesso?
Pranav Bilurkar,

Finché la posizione da cui AJAX sta recuperando è bloccata da robots.txt.
Stephen Ostermiller

Per favore, controlla questo webmasters.stackexchange.com/questions/108169/… e suggerisci se ce ne sono.
Pranav Bilurkar,

Finché la posizione da cui AJAX sta recuperando è bloccata da robots.txt - Si prega di approfondire.
Pranav Bilurkar,

2
Google penalizza coloro che nascondono il loro javascript dalla scansione, al fine di prevenire gli abusi. Lo stesso vale per iframe?
Jonathan,

7

Un'altra soluzione è quella di avvolgere il sig in un arco o div con lo stile impostato su display:nonee quindi utilizzare Javascript per portarlo via in modo che il testo venga visualizzato per i browser con Javascript attivato. I motori di ricerca sanno che non verrà visualizzato, quindi non dovrebbero indicizzarlo.

Questo bit di HTML, CSS e javascript dovrebbe farlo:

HTML:

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

CSS:

.sig {
display:none;
}

javascript:

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

Dovrai includere una libreria jquery .


4
+1 e ci ho pensato ma non sarebbe considerato una forma di "occultamento" da parte di vari ragni?
WebbyTheWebbor,


1
Penso che sia abbastanza pulito :-)
paulmorriss

Questo potrebbe, nella definizione più rigorosa, essere considerato occultamento. Tuttavia, ha potuto stampare tutta la firma con javascript usando un document.write ("") ;. Google non indicizza nulla all'interno di JavaScript. support.google.com/customsearch/bin/…
Athoxx

Credo che Google possa indicizzare tali paragrafi, anche se sono nascosti tramite CSS. L'opzione più sicura è di non includere affatto il testo nell'HTML. (Possiamo usare JavaScript per iniettare il testo in fase di esecuzione.)
wrygiel,

3

Ho avuto un problema simile, l'ho risolto con CSS ma può essere fatto anche con javascript e jquery.

1 - Ho creato una classe che chiamerò " disallowed-for-crawlers" e inserirò quella classe in tutto ciò che non volevo che il bot di Google vedesse, o la posizionassi all'interno di un arco con quella classe.

2 - Nel CSS principale della pagina avrò qualcosa di simile

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

3- Creare un file CSS chiamato disallow.css e aggiungerlo a robots.txt per impedire la ricerca per indicizzazione, quindi i crawler non accederanno a quel file, ma aggiungerlo come riferimento alla pagina dopo il css principale.

4- In disallow.cssho inserito il codice:

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

Puoi giocare con JavaScript o CSS. Ho appena approfittato delle classi disallow e css. :) spero che aiuti qualcuno.


Non sono sicuro che funzioni a causa del fatto che i crawler non accedono al file .css (è una cosa? Da quando i crawler accedono e eseguono la scansione di file css specifici?) E non semplicemente perché vengono visualizzati: nessuno e i crawler capiscono che non verrà visualizzato non lo indicizzano. Anche in questo caso, cosa fai per visualizzare effettivamente il contenuto agli utenti umani?
Σπύρος Γούλας

Il contenuto viene visualizzato quando il passaggio 4 viene caricato per l'utente umano poiché è autorizzato a vedere quel file (disallow.css). E riguardo ai robot che caricano CSS questo è ciò che fanno i motori di ricerca rispettabili al giorno d'oggi, è così che determinano quando un sito Web è mobile friendly o no, i crawler che non lo rispettano non vale la pena preoccuparsi, i principali motori di ricerca leggono css e javascript per eseguire la scansione pagine, lo fanno da circa ... quasi 6 anni ormai? forse di più.
Rolando Retana,

Potete fornire fonti a sostegno di tale affermazione? Consultare webmasters.stackexchange.com/questions/71546/… e yoast.com/dont-block-css-and-js-files e, soprattutto, qui webmasters.googleblog.com/2014/10/… dove viene descritto ciò che descrivi come cattiva pratica.
Σπύρος Γούλας

È una cattiva pratica se volessi che Google vedesse normalmente il mio sito Web e bloccassi tutto il CSS, ed è una cattiva pratica perché interpretano il CSS, ma in questo caso specifico blocco un file specifico, non tutti i CSS, OP chiedo su come impedire a Google di leggere una sezione della pagina. ma non voglio che Google esegua la scansione di quelle sezioni, quindi blocco un singolo CSS (non tutti, solo uno). E per sostenere quale affermazione hai detto? quello che i crawler leggono JS e CSS? è facile come andare ai tuoi Strumenti per i Webmaster di Google e dai un'occhiata a "Scarica come robot", vedrai lì come leggono css e js.
Rolando Retana,

Inoltre, nel mio caso specifico non è che voglio fare qualcosa di losco con il crawler di Google, non voglio solo che Google legga una sezione di informazioni che può sembrare ripetitiva in tutte le pagine. Come numeri di telefono, indirizzi, prodotti correlati o informazioni non pertinenti per la scansione di Google.
Rolando Retana,

2

Un modo per farlo è usare un'immagine di testo piuttosto che un semplice testo.

È possibile che Google alla fine sia abbastanza intelligente da leggere il testo dall'immagine, quindi potrebbe non essere completamente a prova di futuro, ma dovrebbe funzionare bene per almeno un po 'da adesso.

Ci sono molti svantaggi di questo approccio. Se una persona è ipovedente, è male. Se vuoi che i tuoi contenuti si adattino ai dispositivi mobili rispetto ai computer desktop, è male. (e così via)

Ma è un metodo che attualmente (in qualche modo) funziona.


quanto funziona se usi alt & title tage in modo appropriato?
Jayen,

Non ci ho provato, ma sembra probabile che Google li abbia sottoposti a scansione. È una grande limitazione di questo approccio.
James Foster

1

Questo è facile.

Prima di pubblicare la tua pagina devi sapere se si tratta di un bot, un computer o un telefono. È quindi necessario impostare il contenuto di conseguenza. Questa è una pratica standard al giorno d'oggi e funzionalità di base di alcuni CMS.

Esistono molte soluzioni su SE per eseguire il reindirizzamento basato su USER AGENT che può essere inserito nel tuo htaccess. Se questo si adatta al software del tuo forum, puoi eseguire codice diverso dallo stesso DB per offrire ciò di cui Google ha bisogno senza la pula e le rifiniture.

In alternativa puoi inserire una piccola riga nel tuo codice PHP che indica "se AGENTE UTENTE == Googlebot non mostrare le firme".

Se davvero non puoi farlo, puoi ottenere mod_proxy per servire al bot e usarlo per eliminare tutto ciò che il tuo codice php genera e che il bot non deve vedere.

Tecnicamente Google non approva la visualizzazione di una pagina diversa rispetto a quella mostrata dal normale visitatore del sito al loro motore di ricerca, tuttavia, finora, non ha rimosso la BBC e altri che forniscono contenuti specifici di browser / IP / visitatori dai risultati dei loro motori di ricerca . Hanno anche mezzi limitati per vedere se il loro bot è stato "ingannato".

La soluzione alternativa di nascondere il contenuto con CSS affinché venga riattivato da uno script è anche un po 'di un'area grigia. Secondo le linee guida degli Strumenti per i Webmaster del 20/06/11, questa non è una buona idea:

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

Potrebbe non essere un tablet proiettato nella pietra, ma è aggiornato e di Google.

Il trucco per nascondere il contenuto non funzionerà con la minoranza di persone che non hanno JavaScript, questo potrebbe non essere un grosso problema, tuttavia, attendere il caricamento del documento e quindi mostrare le firme non sarà un'esperienza di visualizzazione soddisfacente come farai pensa che la pagina sia stata caricata, quindi salterà mentre le firme nascoste vengono visualizzate per spingere il contenuto nella pagina. Questo tipo di caricamento della pagina può essere irritante se si dispone di un net-top di fascia bassa ma potrebbe non essere evidente se si dispone di una macchina per sviluppatori veloce su una connessione Internet veloce.


6
@ ʍǝɥʇɐɯ: la pubblicazione di contenuti diversi a seconda di chi accede alla pagina è un po 'disapprovata e potrebbe penalizzarti nel motore di ricerca per quanto ne capisco. Preferisco di gran lunga la soluzione JavaScript di paulmorris.
WebbyTheWebbor,

@ ʍǝɥʇɐɯ: erf, se pubblicare contenuti personalizzati è il nome del gioco, lo è anche JavaScript. L'ultima volta che ho controllato il Web in generale non funzionava più così bene senza JavaScript installato (GMail, FaceBook, Google Docs, overflow dello stack, Google+ - già ce l'ho già;) - ecc.). Non vedo la necessità di criticare la soluzione di Paulmorris sulla base della falsa premessa che JavaScript non disponibile sarebbe un problema.
WebbyTheWebbor,

@ ʍǝɥʇɐɯ: Potrebbe piacerti questo di Matt Cutts (responsabile SEO di Google) proprio su questo argomento: theseonewsblog.com/3383/google-hidden-text Questo è stato l'eccellente commento di paulmorris pubblicato in commento alla sua eccellente risposta. Mi dispiace ma chiamare JavaScript "stupidità" su un forum del genere è vicino alla pesca a traina.
WebbyTheWebbor,

... e poi riceviamo questa domanda: webmasters.stackexchange.com/questions/16398/… - "ripieno di parole chiave" è sciocco. Mi dispiace per quello.
ʍǝɥʇɐɯ

Credo che questo rientri nel "cloaking" e quindi non è una buona pratica.
Σπύρος Γούλας

0

No, non è possibile impedire ai robot di eseguire la scansione di parti di pagine. È un'intera pagina o niente.

Gli snippet nei risultati di ricerca di Google sono generalmente presi dalla meta descrizione sulla pagina. Quindi puoi fare in modo che Google mostri una parte specifica della pagina inserendola nel tag meta description. Con i contenuti generati dagli utenti è difficile ottenere buoni frammenti, ma probabilmente prendere il primo post del thread funzionerebbe.

L'unico altro modo a cui riesco a pensare è usare Javascript. Qualcosa come suggerito da Paulmorriss potrebbe funzionare, ma penso che i motori di ricerca indicizzerebbero comunque il contenuto se fosse nell'HTML. È possibile rimuoverlo dall'HTML, archiviarlo nella stringa Javascript, quindi aggiungerlo nuovamente al caricamento della pagina. Questo diventa un po 'complesso, però.

Infine, una cosa da tenere a mente: se Google mostra le firme degli utenti nei loro frammenti, ha deciso che è la parte più rilevante per la query dell'utente.


1
il problema non è tanto quello di Google che mostra i sigs degli utenti nei loro frammenti quanto queste pagine specifiche che ottengono un punteggio molto alto in Google in primo luogo. Il problema qui è precisamente che Google potrebbe pensare che i sig siano rilevanti quando in realtà non lo sono: voglio dire, questo è esattamente ciò di cui tratta la mia domanda.
WebbyTheWebbor,

@Webby, non capisco, perché non vuoi che le tue pagine siano classificate in alto? Hai alcune pagine e domande di esempio in modo che possiamo vedere di cosa stai parlando? E se Google mostra un segno nei risultati di ricerca, allora è rilevante per quella query di ricerca, anche se non è rilevante per la pagina stessa.
Sconcertato

1
Non posso dare esempi, ma io non voglio il mio sito / forum per una posizione elevata e lo fa molto bene. Il problema è che tra i risultati della ricerca (che sono tutti principalmente per il mio sito / forum comunque perché è fondamentalmente il sito sull'argomento), quali dovrebbero essere le vere pagine di entrata sono inondate tra le firme. Voglio dire, io non ci tengo a fare quello che ho chiesto nella domanda. E immagini o JavaScript saranno.
WebbyTheWebbor,

@Webby, le tue risposte sono state un po 'confuse ma sembra che tu insinui che le firme degli utenti sono tutte pagine separate (URL) e quindi appaiono come risultati separati in SERP. Nel qual caso puoi bloccare quelle pagine tramite robots.txt. Altrimenti, prova la soluzione di meta descrizione che ho pubblicato sopra, perché quasi sicuramente mitigherà il problema.
Sconcertato

0

Puoi mettere la pagina in un PHP se con un "else" che porta a un captcha che fornisce la chiave per la parte if.

Non mi interessa davvero perché se le credenziali dell'utente non corrispondono sulla mia pagina ottengono una pagina vuota o vengono inviate alla pagina di accesso.

<?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 dovrebbe essere un hash del giorno corrente o qualcosa che cambia, quindi non è sufficiente aggiungere il valore alla sessione.

Scrivi nel commento se vuoi che aggiunga un captcha di esempio perché non ne ho uno adesso.


Questa risposta presuppone che i siti Web utilizzino o che lo sviluppatore conosca PHP che potrebbe non essere vero. Inoltre, rende difficile accedere al contenuto per gli utenti, il che non è una buona cosa.
John Conde

Posso comprare che non tutti conoscono PHP ma un captcha può essere "di che colore è l'erba", anche il cieco cieco lo sa.
Alfons Marklén,

-3

4
No. Googleoff e Googleon sono supportati solo da Google Search Appliance. Googlebot li ignora per la ricerca sul web. Riferimento: puoi utilizzare i commenti di googleon e googleoff per impedire a Googlebot di indicizzare parte di una pagina? Hai collegato alla documentazione di Google Search Appliance e un commento sull'articolo a cui hai collegato afferma anche che non funziona per Googlebot.
Stephen Ostermiller

@StephenOstermiller oh giusto! Darn
Luke Madhanga,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.