Bezoeken loggen, "nep" bezoekers filteren
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?
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.
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.
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.
Gewijzigd op 20/08/2015 17:23:23 door Ramon van Dongen
maar hoe doe je dat voor een bot, die voeren geen javaScript uit, en wat als iemand JavaScript blokkeert?
nvt.
Gewijzigd op 20/08/2015 17:29:57 door - SanThe -
Alle bots uit deze lijst filteren:
http://www.robotstxt.org/db/all.txt
Edit: Voorbeeld:
$botList moet je zelf aanmaken.
http://www.robotstxt.org/db/all.txt
Edit: Voorbeeld:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : NULL;
if($ua && in_array($ua, $botList)) {
// this is probably a bot
}
?>
$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.
Gewijzigd op 20/08/2015 17:36:51 door DavY -
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).
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.
Dit werkt op zich al. Nu alleen nog een bezoek_ID meegeven.
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.
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.
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.
Gewijzigd op 22/08/2015 10:37:35 door - Ariën -
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?
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?
Is realtime meten echt van belang?
Ook als je meer bezoekers hebt krijg je meer schrijfacties.
Ook als je meer bezoekers hebt krijg je meer schrijfacties.
Hoe bedoel je precies realtime?
Ik zal het inderdaad goed moeten monitoren dat het niet te zwaar wordt en dan het script eruit moeten halen.
Ik zal het inderdaad goed moeten monitoren dat het niet te zwaar wordt en dan het script eruit moeten halen.
Waarom wil je het aantal bezoekers 'precies' weten? En waarom niet bijhouden per bezoeker of hij de laatste 3 minuten nog actief is, via een schrijfactie bij elke view?
Dat gaat eigenlijk vooral om de bezoekers die op de wat grotere pagina's komen. Zonder door te klikken naar een andere pagina kan zo'n bezoeker dus best 2 a 3 minuten op zo'n pagina zijn. Maar ook 2 a 3 seconden. Dat verschil wil ik graag weten.
Dus de pagina bezoeken zonder dat er iets gedaan wordt.
Uiteraard wordt dan aangenomen dat als iemand op de pagina is dat ze dan ook aan het kijken zijn. Maar de pagina kan ook open staan terwijl ze ondertussen ergens anders koffie zitten drinken. Dat terzijde.
Dus de pagina bezoeken zonder dat er iets gedaan wordt.
Uiteraard wordt dan aangenomen dat als iemand op de pagina is dat ze dan ook aan het kijken zijn. Maar de pagina kan ook open staan terwijl ze ondertussen ergens anders koffie zitten drinken. Dat terzijde.
Zulke analyses kan je ook overlaten aan Google Analytics, dan de performance van je site omlaag te halen.
Ik raad het niet aan om het hef in eigen hand te nemen, tenzij je een goed geoptimaliseerde server hebt. Op shared hosting zou ik het zeker niet aanraden!!
Ik raad het niet aan om het hef in eigen hand te nemen, tenzij je een goed geoptimaliseerde server hebt. Op shared hosting zou ik het zeker niet aanraden!!
Ok, dan ga ik van jouw expertise uit en haal ik dit gedeelte eruit.
Mooie inzichten over de bezoekers zijn mooi, maar als door de totstandkoming daarvan de server eruit ligt en bezoekers helemaal niks meer kunnen zien gaat het ook niet helemaal goed.
Mooie inzichten over de bezoekers zijn mooi, maar als door de totstandkoming daarvan de server eruit ligt en bezoekers helemaal niks meer kunnen zien gaat het ook niet helemaal goed.
- Aar - op 20/08/2015 17:26:43:
maar hoe doe je dat voor een bot, die voeren geen javaScript uit
Volgens mij heb je een paar nieuwsberichten gemist... ;-)
http://googlewebmastercentral.blogspot.nl/2014/05/understanding-web-pages-better.html
In ieder geval de GoogleBot voert tegenwoordig wel degelijk Javascript (en CSS) uit. Hij vangt zelfs dynamische content die via AJAX in je pagina wordt geïnjecteerd.
Praktijkvoorbeeld: door een beperking van de templater die ik moet gebruiken, heeft elke pagina dezelfde title-tag. Dat is vervelend voor SEO; daarom wijzig ik op elke pagina de title met javascript. Geen probleem, wordt gewoon verwerkt.




