Ich bin mir ziemlich sicher, dass viele Leute daran gedacht haben, aber aus irgendeinem Grund kann ich sie nicht mit der Google- und StackOverflow-Suche finden.Einen Link komplett unsichtbar machen?
Ich möchte einen unsichtbaren Link (auf der schwarzen Liste von robots.txt) zu einer CGI- oder PHP-Seite machen, die bösartige Bots und Spider "einfängt". Bisher habe ich versucht:
Leere Links im Körper:
<a href='/trap'><!-- nothing --></a>
Das funktioniert ganz gut die meiste Zeit, mit zwei kleinere Probleme:
Problem: Die Verknüpfung ist Teil des Dokuments. Auch wenn es mit einer Maus ziemlich unklickbar ist, schlagen einige Besucher es dennoch unabsichtlich bei der Tastatur-Navigation der Website mit Tab und Geben Sie ein. Wenn sie die Seite zum Beispiel in ein Textverarbeitungsprogramm oder eine E-Mail-Software kopieren, wird der Trap-Link mitkopiert und manchmal sogar geklickt (einige Software mag keine leeren
<a>
Tags und kopiert den href als Inhalt von das Tag).unsichtbare Blöcke im Körper:
<div style="display:none"><a href='/trap'><!-- nothing --></a></div>
dies das Problem mit Tastaturnavigation fixiert, zumindest in den Browsern getestet I. Die Verbindung ist effektiv von der normalen Anzeige der Seite nicht zugänglich, während sie für die meisten Spider Bots mit ihrer aktuellen Intelligenz noch vollständig sichtbar ist.
Problem: Der Link ist immer noch Teil des DOM. Wenn der Benutzer den Inhalt der Seite kopiert und wieder einfügt, wird er erneut angezeigt.
Innenkommentarblocks:
<!-- <a href='/trap'>trap</a> -->
Dies entfernt effektiv den Link aus dem DOM der Seite. Nun, technisch gesehen ist der Kommentar immer noch Teil des DOM, aber es erreicht den gewünschten Effekt, dass konforme Benutzeragenten das A-Element nicht erzeugen, so dass es kein tatsächlicher Link ist.
Problem: Die meisten Spider-Bots sind heutzutage schlau genug, um (X) HTML zu parsen und Kommentare zu ignorieren. Ich habe Bots gesehen, die Internet Explorer COM/ActiveX-Objekte verwenden, um das (X) HTML zu analysieren und alle Links über XPath oder Javascript zu extrahieren. Diese Arten von Bots werden nicht dazu verleitet, dem Trap-Hyperlink zu folgen.
I wurde mit der Methode # 3 bis gestern Abend, als ich von einem Schwarm von Bots getroffen wurde, die auf der wirklich selektiv zu sein scheinen, verbindet sie folgt. Jetzt bin ich zurück zu Methode # 2, aber ich suche immer noch nach einem effektiveren Weg.
Irgendwelche Vorschläge, oder eine andere andere Lösung, die ich verpasst habe?
Was passiert, wenn einige Kunden aktiviert haben JavaScript nicht? –
Dann sehen sie den Link nicht, haben aber den Nachteil, dass sie auf den Link klicken können. Es ist keine 100% ige Lösung, aber ich denke nicht, dass es viele Clients gibt, die den nicht sichtbaren Link mit deaktiviertem JavaScript aufrufen. –
Dies scheint eine großartige Lösung zu sein! Ich bin nicht wirklich besorgt über die JavaScript-Abhängigkeit, da sie nur die Überschneidung zweier Minderheiten betrifft (diejenigen, die die Links durch Kopieren-Einfügen oder Tabbing entdecken, und diejenigen, die Skripte deaktiviert haben). Können Sie Ihre Antwort auf eine Lösung erweitern, die nicht von jQuery abhängig ist? Ich denke, dass es document.GetElementById() und node.parentNode.removeChild() beinhalten sollte, aber meine Erfahrung mit Javascript ist ziemlich begrenzt. – Juliano