Netsensei

Much ado about nothing

Referer Spam

Het is een oud zeer. Ik heb daar ook enorm veel last van. In de eerste plaats gaat het inderdaad om bots die massaal je pagina’s bezoeken en via de referer informatie in een HTTP request een linkje proberen te krijgen op je website via top 10 referer scripts en zo.

Als webeigenaar ben jij de dupe: er wordt immers reclame gemaakt op jouw kosten (bandbreedte). Bovendien is het vervuiling van je apache logfiles, je - vaak op deze logfiles gebaseerde - statistieken en van je databank als je referers logt. Ik kan mij voorstellen dat dit voor professionele websitebouwers die op basis van dergelijke informatie een profiel van bezoekers willen opstellen, een extra horde is.

Wat kan je er tegen doen? Wel, niet zo heel veel heb ik willen merken.

De HTTP specs (RFC 2616) schrijven voor uit welke velden een door een client gegenereerde HTTP request moet bestaan. Waar de inhoud van zo’n veld vandaan komt, dat wordt uiteraard niet gespecifieerd. Die vrijheid heeft tot misbruiken geleid.

Een client dient het referer veld in een HTTP request in te vullen. Dit is een ‘teruglink’ naar de bron waarvan de client naar een pagina werd geleid. Spammers schrijven bots die websites bezoeken en hun spamlinks expliciet via het referer veld proberen achter te laten.

Echter, een client moet via de user-agent string van een HTTP request zichzelf identificeren. De IE7 webbrowser heeft bijvoorbeeld deze identificatiestring:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
terwijl de Googlebot volgende string moet meegeven in het User Agent veld:
Googlebot/2.X (+http://www.googlebot.com/bot.html)
Je zou dus kunnen spammers kunnen blokkere n op basis van deze informatie via de .htaccess file en de robots.txt file. En strikt genomen kan je zo inderdaad wel wat spam tegenhouden. Helaas zijn ontwikkelaars ook hier vrij in de keuze van wat ze hier invullen. Gevolg: spammers kopiëren gewoon de user-agent strings van de grote browsers om zich te vermommen.

Wat je wel kan doen:

Referer spam is vrij doorzichtig. Door je apache logs te onderzoeken kan je al snel de spam terugvoeren tot een aantal IP adressen. Die kan je in je .htaccess file blokkeren. Jammer genoeg kan je dat niet lang volhouden omdat een lange .htaccess file parsen een serieuze aanslag is op de performance van je webserver. Een must is de aanwezigheid van een robots.txt file waarin je expliciet een aantal bots verbiedt of toelaat. Tenslotte kan je ook het nofollow attribuut opnemen in al je hyperlinks om spambots op een dood spoor te zetten.

O ja, je zou natuurlijk de referer wederkerig kunnen bevragen en zien of er daar inderdaad een effectieve, geldige link staat naar je pagina. Maar op die manier sla je het web effectief dood.

Desondanks is er - bij mijn weten - geen effectieve oplossing voor dit probleem en zal er altijd wel wat spam doorsijpelen.

4 Responses to “Referer Spam”

  1. Peter Dedecker

    Bij mij valt dat toch wel redelijk goed mee. De herkende spammers krijgen trouwens een vrij minimalistische pagina voorgeschoteld, wat mijn traffiek redelijk goed beperkt.

    Maar het blijft nog altijd te veel natuurlijk,

  2. Artueel blog 2.0 - Simple. Social. Fun

    [...] Update: Netsensei.nl geeft enkele goede tips! [...]

  3. Koen Van der Auwera

    Ik gebruik Mint (http://haveamint.com/) en dat is referrer-spam-proof. :)

    Zeker de moeite! Ik zou niet meer zonder kunnen.

  4. Pascal Van Hecke

    Gewoon logs niet meer lezen.

    en inderdaad, zoals Koen hierboven, een log systeem gebruiken dat met javascriptlet werkt.
    Mint, phpopentracker (http://pascal.vanhecke.info/?s=phpopentracker ), of deze http://www.tracewatch.com/ (zelf niet getest).

    Of één van de vele extern gehoste trackers, als je zelf niet per se de data in handen hoeft te hebben.

Leave a Reply