2008-09-05 13 views
7

Ich stelle fest, dass StackOverflow eine Anzahl von Sichten für jede Frage hat und dass diese Ansichtsnummern ziemlich niedrig und genau sind.Anzahl der Aufrufe für eine Seite, die Suchmaschinen ignoriert?

Ich habe eine ähnliche Sache auf einer meiner Seiten. Es protokolliert grundsätzlich einen "Treffer", wenn die Seite in den Backend-Code geladen wird. Leider tut es dies auch für Suchmaschinentreffer, die aufgeblähte und ungenaue Zahlen ergeben.

Ich denke, eine Möglichkeit, einen Roboter nicht zu zählen, wäre, die Ansicht mit einem AJAX-Aufruf zu zählen, sobald die Seite geladen ist, aber ich bin sicher, es gibt andere, bessere Möglichkeiten, Suchmaschinen in Ihren Trefferzähler zu ignorieren Lassen Sie sie Ihre Site crawlen. Kennst du irgendwelche?

Antwort

4

Ein AJAX-Aufruf wird es tun, aber Suchmaschinen laden normalerweise keine Bilder, Javascript- oder CSS-Dateien, daher kann es einfacher sein, eine dieser Dateien in die Seite aufzunehmen und die URL der gewünschten Seite zu übergeben Protokollieren Sie eine Anforderung als Parameter in der Dateianforderung.

Zum Beispiel auf der Seite ...

http://www.example.com/example.html

Sie können im Kopfbereich umfassen

<link href="empty.css?log=example.html" rel="stylesheet" type="text/css" /> 

Und haben Sie Ihre Server-Seite die Anfrage einzuloggen, dann eine leere CSS zurückkehren Datei. Der gleiche Ansatz würde für JavaScript oder Image-Dateien gelten. In allen Fällen sollten Sie jedoch sorgfältig prüfen, welche Caching-Vorgänge durchgeführt werden können.

Eine andere Möglichkeit wäre, die Suchmaschinen auf Basis ihrer user agent zu beseitigen. Es gibt eine große Liste möglicher Benutzeragenten unter http://user-agents.org/, damit Sie beginnen können. Natürlich könntest du auch anders herum gehen und nur Anfragen von Dingen abzählen, von denen du weißt, dass sie Webbrowser sind (IE, Firefox, Safari, Opera und dieses neumodische Chrome-Ding würde dir 99% des Weges dorthin bringen).

Noch einfacher wäre die Verwendung eines Loganalysetools wie awstats oder eines Dienstes wie Google analytics, die beide dieses Problem bereits gelöst haben.

+0

Wir haben unseren Inkrementmethode auf eine Ajax-Post geändert haben - auch wenn Benutzer ohne Javascript nicht eine Frage der Ansicht Zählung auswirken werden, didn wir Ich möchte auch keine schwarze Liste haben! –

+2

Suchmaschinen Zugriff auf CSS-Dateien: http://www.free-seo-news.com/newsletter246.htm ... auch wenn Sie einige Websites in Google Cache überprüfen, sie sind gestylt, dies bestätigt, dass sie scannen und speichern CSS-Dateien. – davidhq

+1

Ich bin mir ziemlich sicher, dass Suchmaschinen Javascript jetzt ausführen – Nate

0

Der Grund dafür, dass Stack Overflow eine genaue Anzahl von Ansichten hat, ist, dass es nur jede Ansicht/jeden Benutzer zählt.

Third-Party-Hit-Zähler (und Web-Statistiken) -Anwendung oft Suchmaschinen ausfiltern und zeigen sie in einem separaten Fenster/Registerkarte/Abschnitt.

0

Sie müssen entweder tun, was Sie in Ihrer Frage mit AJAX gesagt haben. Oder schließen Sie User-Agent-Strings aus, die bekannte Suchmaschinen sind. Der einzige sichere Weg, Bots zu stoppen, ist mit AJAX.

1

Sie müssen nicht wirklich AJAX verwenden, verwenden Sie einfach JavaScript, um einen iFrame außerhalb des Bildschirms hinzuzufügen. KEEP IT SIMPLE

<script type="javascript"> 
document.write('<iframe src="myLogScript.php" style="visibility:hidden" width="1" height="1" frameborder="0">'); 
</script> 
2

Um dieses Problem zu lösen ich einen einfachen Filter implementiert, die an den User-Agenten-Header in der HTTP-Anforderung aussehen würden und vergleichen Sie es mit einer Liste bekannten Roboters.

Ich habe die Roboterliste von www.robotstxt.org. Es kann in einem einfachen Textformat heruntergeladen werden, das leicht analysiert werden kann, um die "Blacklist" automatisch zu generieren.

1

Eine Erweiterung Matt Sheppard Antwort könnte etwa wie folgt sein:

<script type="text/javascript"> 
    var thePg=window.location.pathname; 
    var theSite=window.location.hostname; 
    var theImage=new Image; 
    theImage.src="/test/hitcounter.php?pg=" + thePg + "?site=" + theSite; 
    </script> 

, die in eine Seite Kopf- oder Fußzeile Vorlage eingesteckt werden kann, ohne den Namen der Seite Server-Seite zu ersetzen. Wenn Sie die Abfragezeichenfolge (window.location.search) einbeziehen, sollte eine stabile Version die Zeichenfolge codieren, um zu verhindern, dass Übeltäter Seitenanfragen erstellen, die Sicherheitslücken ausnutzen, die auf seltsamen Dingen in URLs basieren. Das Schöne daran ist, dass ein normaler Tag oder kein rotes X anzeigt, wenn ein Problem mit dem Hitcounter-Skript vorliegt. In einigen Fällen ist es auch wichtig zu wissen, die URL, die von dem Browser gesehen wurde, vor dem Neuschreiben usw., die serverseitig passieren, und das gibt Ihnen das. Wenn Sie beide Möglichkeiten wünschen, fügen Sie einen weiteren Parameter serverseitig hinzu, der diese Version des Seitennamens ebenfalls in die Abfragezeichenfolge einfügt.

Ein Beispiel für die Protokolldateien von einem Test dieser Seite:

10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/testpage.html HTTP/1.1" 200 306 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16" 
10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/hitcounter.php?pg=/test/testpage.html?site=www.home.***.com HTTP/1.1" 301 - "http://www.home.***.com/test/testpage.html" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16" 
Verwandte Themen