hampft!

Traffic Klau

Bei Durchsicht meiner Logfiles ist mir mal wieder aufgefallen: von http://profile.myspace.com/index.cfm wurde im Dezember 757 mal auf meine Site verwiesen. Eigentlich toll, nur war das kein Seitenverweis, sondern jemand bedient sich schamlos bei meinen Bildern.

Ja wie haben wir's denn? Nachdem man bei myspace.com wohl nicht viel Webspace für die eigene Darstellung bekommt (irgendwie widerspricht das dem Domainnamen doch), haben gleich 4 Jungs und Mädels dort beschlossen, sich an meinem Fundus an SF-Buch-Covern zu bedienen und einfach mal ein Bild auf ihre Seite zu pappen.

Normalerweise ist dagegen ja nix einzuwenden: Bild runterladen, kurze Mail an webmaster und dann das Bild auf der eigenen Seite verlinken.

Die 4 Spacken von dieser Website haben dabei nur ein paar Fehler gemacht:

Was ist da jetzt so schlecht dran? Eines von diesen Bildern hat so ca. 130kB. Letzten Monat gab's nur von myspace.com aus 757 Zugriffe auf diese Bilder. Macht zusammen: 100MB Traffic. Ohne, dass die Leute, die das ansehen, auch nur ansatzweise mitbekommen, dass die Bilder von mir sind und dass ich die Rechnung zahle.

Was haben meine diebischen Freunde dabei vergessen? Richtig: ich bin der, der den Webserver kontrolliert, von dem die Bilder kommen. Einfach wäre ja, mal ein paar unanständige Bilder einzuhängen und meine Bilder ein bisschen umzubenennen. Aber das ist recht unfreundlich und auch keine direkte Lösung.

Eine mögliche Lösung ist aber das Apache-Modul mod_rewrite. In dem sehr schönen URL Rewriting Guide findet sich auch schon der Lösungsansatz: Im Kapitel Access Restriction unter Blocked Inline-Images findet sich dieses http.conf-Schnipsel:

RewriteCond %{HTTP_REFERER} !^$                                  
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.gif$        -                                    [F]

Das ist ja schon eine ganz gute erste Näherung, aber einerseits findet sich bei mir das übliche Mix verschiedener Bildformate (png, gif, jpg), andererseits möchte ich einige Bilder auch tatsächlich auf anderen Websites veröffentlicht sehen, z.B. Produktfotos bei ebay oder Avatare in verschiedenen Foren. Außerdem will ich ein Ersatzbild () statt einer Fehlermeldung senden.

Deshalb tut dieser Schnipsel bei mir Dienst (man möge sich die eigeklammerten Zeilennummern wegdenken):

(1) <IfModule mod_rewrite.c>
(2)     RewriteEngine On
(3)     RewriteCond %{HTTP_REFERER}     !^$
(4)     RewriteCond %{HTTP_REFERER}     !^http://(www\.)?hampft\.de      [NC]
(5)     RewriteCond %{REQUEST_URI}      !/pic/free/                      [NC]
(6)     RewriteRule .*\.(gif|png|jpg)$  /pic/free/yuck.gif               [R,L]
(7) </IfModule>
Sollte das mod_rewrite verfügbar sein (1), schalten wir als allererstes die Rewrite Engine an (2). Dann sehen wir mal nach, ob der Browser überhaupt einen Referrer übermittelt (3), und ob der "hampft" vielleicht nicht im Referrer vorkommt (4, ich will ja, dass man auf der eigenen Website verlinkte Bilder sehen kann). Wenn in der angeforderten Datei im Pfad "/pic/free/" vorkommt, will ich die Regel nicht beachtet haben (5). Wenn diese Regeln alle erfüllt sind, dann darf die Rule auf Zeile (6) zum Zuge kommen: Wenn's die Endung gif, png oder jpg hat, dann wird die angeforderte Datei durch /pic/free/yuck.gif ersetzt, der schon oben angekündigte Platzhalter . Der ist so klein, dass er auch nicht größer als die oben vorgeschlagene 403-Fehlermeldung ist.

Tja, viel Spass beim Bildchen austauschen!

Links:


hampft! ->