it-swarm.com.de

Verhindern, dass Roboter bestimmte Teile einer Seite crawlen

Als Webmaster, der für eine winzige Website mit einem Forum zuständig ist, erhalte ich regelmäßig Beschwerden von Nutzern, dass sowohl die interne Suchmaschine als auch die externen Suchanfragen (wie bei Google) durch die Signaturen meiner Nutzer vollständig verschmutzt sind (sie verwenden lange Zeit) Signaturen und das ist ein Teil der Erfahrung des Forums, weil Signaturen in meinem Forum sehr viel Sinn machen.

Im Grunde sehe ich ab sofort zwei Möglichkeiten:

  1. Das Rendern der Signatur als Bild und das Klicken auf das "Signaturbild" führt zu einer Seite, die die echte Signatur enthält (mit den Links in der Signatur usw.), und diese Seite wird für die Suche als nicht durchsuchbar festgelegt Motorspinnen). Dies würde etwas Bandbreite verbrauchen und etwas Arbeit erfordern (weil ich einen HTML-Renderer benötigen würde, der das Bild usw. erzeugt), aber offensichtlich würde es das Problem lösen (es gibt winzige Probleme, da die Signatur das Schrift-/Farbschema von nicht respektiert Die Benutzer, aber meine Benutzer sind sowieso sehr kreativ mit ihren Signaturen, verwenden benutzerdefinierte Schriftarten/Farben/Größen usw., es ist also kein so großes Problem.

  2. Markieren Sie jeden Teil der Webseite, der eine Signatur enthält, als nicht durchsuchbar.

Ich bin mir jedoch nicht sicher, ob das später getan werden kann. Können Sie bestimmte Teile einer Webseite als nicht durchsuchbar markieren?

28
WebbyTheWebbor

Hier ist die gleiche Antwort, die ich für noindex-Tag für google bei Stack Overflow gegeben habe:

Sie können verhindern, dass Google Teile der Seite sieht, indem Sie diese Teile in iFrames einfügen, die von robots.txt blockiert werden.

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.

Anstatt iframes zu verwenden, können Sie den Inhalt der versteckten Datei mit AJAX laden. Hier ist ein Beispiel, das dazu jquery ajax verwendet:

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>
8

Eine andere Lösung besteht darin, das Sig in einen Span oder Div mit einem auf display:none festgelegten Stil zu setzen und diesen dann mit Javascript zu entfernen, damit der Text für Browser mit aktiviertem Javascript angezeigt wird. Suchmaschinen wissen, dass es nicht angezeigt wird und sollten es daher nicht indizieren.

Dieses bisschen HTML, CSS und Javascript sollte es tun:

HTML:

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

CSS:

.sig {
display:none;
}

javascript:

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

Sie müssen eine jquery Bibliothek einbinden.

7
paulmorriss

Ich hatte ein ähnliches Problem, ich habe es mit CSS gelöst, aber es kann auch mit Javascript und jQuery gemacht werden.

1 - Ich habe eine Klasse mit dem Namen "disallowed-for-crawlers" erstellt und diese Klasse in alles eingefügt, was der Google-Bot nicht sehen soll, oder in einen Bereich mit dieser Klasse.

2 - Im Haupt-CSS der Seite werde ich so etwas haben

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

3- Erstellen Sie eine CSS-Datei mit dem Namen disallow.css und fügen Sie diese zur robots.txt hinzu, damit sie nicht gecrawlt werden kann. Crawler greifen also nicht auf diese Datei zu, sondern fügen sie als Verweis auf Ihre Seite nach der Haupt-CSS hinzu.

4- In disallow.css habe ich den Code eingefügt:

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

Sie können mit Javascript oder CSS spielen. Ich habe gerade die Disallow- und die CSS-Klasse ausgenutzt. :) hoffe es hilft jemandem.

3
Rolando Retana

Eine Möglichkeit, dies zu tun, besteht darin, ein Bild des Textes anstelle von einfachem Text zu verwenden.

Es ist möglich, dass Google irgendwann schlau genug sein wird, um den Text aus dem Bild herauszulesen, so dass es möglicherweise nicht vollständig zukunftssicher ist, aber es sollte für mindestens eine Weile gut funktionieren.

Dieser Ansatz hat eine Reihe von Nachteilen. Wenn eine Person sehbehindert ist, ist es schlecht. Wenn Sie möchten, dass sich Ihr Inhalt an mobile Geräte und nicht an Desktop-Computer anpasst, ist dies schlecht. (und so weiter)

Aber es ist eine Methode, die derzeit (etwas) funktioniert.

2
James Foster

Das ist einfach.

Bevor Sie Ihre Seite bereitstellen, müssen Sie wissen, ob es sich um einen Bot, einen Computer oder ein Telefon handelt. Sie müssen dann den Inhalt entsprechend einstellen. Dies ist heutzutage die Standardpraxis und die Kernfunktionalität einiger CMS.

SE bietet eine Vielzahl von Umleitungslösungen basierend auf USER AGENT, die Sie in Ihren Zugriff aufnehmen können. Wenn dies für Ihre Forensoftware geeignet ist, können Sie verschiedene Codes aus derselben Datenbank ausführen, um die von Google benötigten Informationen ohne Spreu und Schnipsel bereitzustellen.

Alternativ können Sie eine kleine Zeile in Ihren PHP Code einfügen, die ein 'wenn USER AGENT == Googlebot dann keine Signaturen zeigt' bewirkt.

Wenn Sie das wirklich nicht können, können Sie mod_proxy dazu bringen, dem Bot zu dienen und damit alles zu entfernen, was Ihr PHP-Code generiert, das der Bot nicht sehen muss.

Technisch gesehen ist Google nicht damit einverstanden, dass in der Suchmaschine eine andere Seite angezeigt wird als beim normalen Website-Besucher. Bisher hat Google jedoch die BBC und andere Anbieter von browserspezifischen/IP-/besucherspezifischen Inhalten nicht aus den Suchmaschinenergebnissen entfernt . Sie haben auch nur begrenzte Möglichkeiten, um festzustellen, ob ihr Bot "betrogen" wurde.

Die alternative Lösung, Inhalte mit CSS auszublenden, damit sie durch ein Skript wieder aktiviert werden können, ist ebenfalls eine Grauzone. Nach den eigenen Richtlinien für Webmaster-Tools vom 20.6.11 ist dies keine gute Idee:

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

Das ist vielleicht keine in Stein gemeißelte Tablette, aber es ist auf dem neuesten Stand und von Google.

Das Ausblenden des Inhaltstricks funktioniert nicht bei einer Minderheit von Personen, die kein Javascript haben. Dies ist möglicherweise kein großes Problem. Das Warten auf das Laden des Dokuments und das Anzeigen der Signaturen ist jedoch kein zufriedenstellendes Anzeigeerlebnis Denke, die Seite wurde geladen, dann springt sie herum, während die verborgenen Signaturen angezeigt werden, und schiebe dann den Inhalt die Seite hinunter. Diese Art des Ladens von Seiten kann irritierend sein, wenn Sie ein Low-End-Netztop haben, ist jedoch möglicherweise nicht erkennbar, wenn Sie einen schnellen Entwicklercomputer mit einer schnellen Internetverbindung haben.

1
ʍǝɥʇɐɯ

Nein, Roboter können nicht daran gehindert werden, Teile von Seiten zu durchsuchen. Es ist eine ganze Seite oder nichts.

Die Schnipsel in den Suchergebnissen von Google stammen normalerweise aus Meta-Beschreibung auf der Seite. Sie können also festlegen, dass Google einen bestimmten Teil der Seite anzeigt, indem Sie diesen in das Meta-Description-Tag einfügen. Bei benutzergenerierten Inhalten ist es schwierig, gute Snippets zu erhalten, aber es würde wahrscheinlich funktionieren, den ersten Beitrag des Threads zu schreiben.

Die einzige andere Möglichkeit, die ich mir vorstellen kann, ist die Verwendung von Javascript. Etwas wie paulmorriss schlug vor kann zu funktionieren, aber ich denke, Suchmaschinen würden den Inhalt immer noch indizieren, wenn er im HTML ist. Sie können es aus dem HTML-Code entfernen, in der Javascript-Zeichenfolge speichern und dann beim Laden der Seite wieder hinzufügen. Das wird allerdings etwas komplex.

Abschließend ist Folgendes zu beachten: Wenn Google die Signaturen der Benutzer in ihren Snippets anzeigt, hat Google entschieden, dass dies der Teil ist, der für die Suchanfrage des Benutzers am relevantesten ist.

0
DisgruntledGoat

Sie können die Seite in ein PHP mit einem "else" einfügen, das zu einem Captcha führt, das den Schlüssel für den if-Teil enthält.

Es ist mir egal, denn wenn die Benutzeranmeldeinformationen auf meiner Seite nicht übereinstimmen, erhalten sie eine leere Seite oder werden an die Anmeldeseite gesendet.

<?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 sollte ein Hash des aktuellen Tages sein oder sich ändern, sodass es nicht ausreicht, den Wert der Sitzung hinzuzufügen.

Schreiben Sie in den Kommentar, ob ich ein Beispiel-Captcha hinzufügen soll, da ich noch keines habe.

0
Alfons Marklén