Ik ben bezig om op een site de bezoekers zelf ook bij te houden als logboek. Dat gaat op zich goed, maar een gedeelte van de bezoekers zijn "nep".

Komende uit 'Mountain View' is het de Google Bot etc.
Die "nep" bezoekers bezoeken 1 pagina en zijn dan weer weg.

Graag wil ik voor mezelf de "nep" bezoekers eruit kunnen filteren. Maar het komt natuurlijk ook voor dat iemand via Google op de website komt, de pagina bekijkt en denkt "he! dit is niet wat ik zoek". Dus filteren op slechts één bekeken pagina gaat niet.

Hoe zou ik dit dus het beste kunnen doen?

Is het een idee om elke x aantal seconden met ajax een bestandje aan te roepen wat de tijd update 'tot wanneer' de bezoeker op de website is? Of werkt zoiets niet?
Elke bot heeft een eigen useragent, dus filter die in de telling er gewoon uit.
Verder is het het beste voor de performance om met een timeout te werken van 3 tot 5 minuten, en bij te houden of iemand binnen deze tijd nog een view doet.
Ramon van Dongen op 20/08/2015 17:10:29

... 'tot wanneer' de bezoeker op de website is?


Interessant, maar hoe kom je daar achter?
in principe niet, maar door bijvoorbeeld elke 5 seconde te kijken of iemand nog steeds je website 'open' heeft staan kun je die tijd dan wel steeds bij werken.

Je kunt er dan hooguit 4 seconden naast zitten. Toch?

Dat iemand namelijk maar één pagina bezoekt hoeft namelijk geen probleem te zijn. Maar of hij dat voor 3 seconden doet of voor 8 minuten, is nogal een verschil.
maar hoe doe je dat voor een bot, die voeren geen javaScript uit, en wat als iemand JavaScript blokkeert?
nvt.
Alle bots uit deze lijst filteren:

http://www.robotstxt.org/db/all.txt

Edit: Voorbeeld:

<?php
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : NULL;

if($ua && in_array($ua, $botList)) {
// this is probably a bot
}
?>

$botList moet je zelf aanmaken.
Google Analystics doet precies wat je wilt en veel meer. En dat met 3 regels Javascript (externe hosting).
PiWik doet precies wat je wilt en meer en dat met 1 include in PHP (eigen hosting).
@Eddy; Klopt helemaal, dat gebruik ik uiteraard ook en tegen Google kunnen we zelf nooit op.
Maar het blijft natuurlijk mooi om zelf ook te proberen.

@DavY; Bedankt. Daar kan ik wel wat mee. Een groot gedeelte is er zo al uitgefilterd. Dus het gedeelte van de Bots is dan al weg.

Voor het 'hoe lang een bezoeker aanwezig is' ben ik nu wat aan het pielen.


    setInterval(function(){
	$.get('bezoektot.php');
	},1500);

Dit werkt op zich al. Nu alleen nog een bezoek_ID meegeven.
En wat als iemand JavaScript heeft uitstaan met NoScript? Onthoud ook dat je met elke 1,5 seconde een request/schrijfactie doet in MySQL, en dat het een hoop performance kost, en zeker op een drukke site.

Ik zou het niet aanraden, en zeker niet als je geen eigen server hebt. De kans dat je de server omlaag trekt is vrij groot.

De optie om het met een timeout via PHP op te slaan is behoorlijk minder zwaar.
Als iemand Javascript uit heeft staan zal het in Google Analytics ook niet werken. Het is puur als extratje om meer inzicht te krijgen in de bezoekers.

1,5 seconden moet makkelijk naar 5 seconden kunnen of misschien zelfs 10. Nu om te proberen met klein scriptje even op 1,5 seconden gezet.

Het is geen hele drukke site. Zou iedere 5 seconden dan nog voor echt problemen kunnen zorgen?

Reageren