Versteckte Werbelinks - Weiterleitungen für Affiliates
Da das Thema aktuell wieder mal bei uns aufgekommen ist, möchte ich euch unsere Erfahrungen nicht vorenthalten.
Das normale Affiliate-Links bei Suchmaschinen nicht gern gesehen werden, ist schon lange bekannt. Doch was ist da zu tun? Es gibt da verschiedene Möglichkeiten die Werbelinks so zu gestalten, dass diese nicht offensichtlich Links zu den Affilinetzwerken sind.
Wenn es nur ein paar Links sind, können diese auf eine kleines Weiterleitungscript geschickt werden.
Beispielsweise wird anstatt extern auf
zu linken, leitet man intern auf
In dem Zielscript weiter.php findet dann die Zuordnung zwischen Ziffer und Affililink statt und es wird auf das Ziel weitergeleitet.
Bei viele unterschiedlichen Links werden diese URLs meistens codiert übergeben. Das gebräuchlichste Verfahren ist die base64-Kodierung. Da wird dann aus dem Beispiellink von oben:
In dem Weiterleitungsscript wird dann der Link dekodiert und damit auf die Zielseite weitergeleitet.
So jetzt gibt es aber auch unterschiedliche Weiterleitungsarten. Wir unterscheiden da zwischen Server- und Clientseitige Weiterleitungen.
Serverseitige Weiterleitungen sind Redirect-Direktive des Servers, mod_rewrite und das Setzen des HTTP-Headers
HTTP-Header Weiterleitung
PHP bietet zur letztgenannten Methode eine einfache und trotzdem leistungsstarke Möglichkeit den HTTP-Header zu setzen.
Mit der PHP Funktion header() können Zeilen in den HTTP-Header eingefügt werden, sodass der HTTP-Response direkt beeinflusst wird.
header("Location: http://www.domain.de/");
exit();
?>
In diesem Beispiel wird direkt zur angegebenen URL weitergeleitet und der Server gibt den Status 302 (Found) zurück. Leider ist das Google URL-Hijackingproblem immer noch nicht ganz aus der Welt und man sollte hier noch eine zusätzliche Zeile einfügen, die den Status 301 (Moved Permanently) übermittelt um sich nicht den fremden Content zu eigen zu machen. Anstatt der exit-Funktion können auch weitere Ausgaben folgen. Auch Programme zur Klickauswertungen können hier prima eingebunden werden.
Clientseitige Weiterleitungen sind das Meta-Element und die Javascript-Weiterleitung
Meta Weiterleitung
Mit der folgende Meta-Angabe im head-Bereich der HTML-Seite kann die Seite automatisch im Browser weitergeleitet werden.
Mit der content-Angabe kann die Zeit bis zur Weiterleitung angegeben werden, die 1 steht hier für eine Sekunde Verzögerung. Als url sollte eine absolute Adresse angegeben werden.
Javascript Weiterleitung
location.href='http://www.domain.de/';
</script>
Diese Weiterleitung funktioniert selbstverständlich nur bei aktiviertem Javascript.
So und nun welche Weiterleitung ist die sinnvollste für Affiliates? Wir haben in letzter Zeit diese Weiterleitungen in unterschiedlichen Kombinationen ausgetestet.
Nicht nur das Google die Meta-Weiterleitung nicht besonders mag, es wird bei dieser Weiterleitung auch kein Referrer mitgeliefert, der bei einigen Partnerprogrammen Pflicht ist und sogar beim Fehlen des Referers zum Auschluss aus dem Programm führen kann. Also kommt diese Variante nicht in Frage.
Die Javascript Variante liefert wohl ein Referrer mit, funktioniert aber bei deaktiviertes Javascript nicht immer.
Die HTTP-Header Weiterleitung eignet sich demnach, also nach wie vor, am Besten für Affiliates. Wobei der Statuscode 301 mitgeliefert werden sollte, um sich nicht durch mögliches URL-Hijacking unbeliebt zu machen.
Hier eine einfaches Beispiel in PHP für eine Weiterleitung mit HTTP-Header und Base64-Dekodierung:
$URL_OUT = base64_decode($_REQUEST['link']);
header("Status: 301");
header("Location: " . $URL_OUT);
echo "<a href=\"$URL_OUT\">Zum Ziel</a>";
?>
Aufgerufen wird das Ganze dann mit einem base64-encodeten Linkanhang:
Weiterführende Beiträge:
URL Hijacking in Google - mögliche Prävention
Verwandte Beiträge:
- Keine
Trackback
RSS Feed

Loading ...
16 Kommentare
1.
Hanno Mühlbrandt
schrieb am 10. May 2007 um 16:51
Hallo Axel,
der Artikel ist super. Ich hätte allerdings noch eine kleine Ergänzung: Ich habe die Erfahrung gemacht, dass viele Besucher relativ resistent gegen Affiliate Links geworden sind, das schließt auch die codierten Links mit ein, die ja wirklich auf den einfachen Surfer ein wenig ‘komisch’ wirken. Lösen kann man das allerdings folgendermaßen:
Gelinkt wird folgendermaßen:
http://domain.de/pp-ebay.htm
In die .htaccess kommt dann sowas:
RewriteRule pp-^(.*).htm$ weiter.php?pp=$1
Kleine Erläuterung:
In der weiter.php wird jedem PP eine ID (hier ebay) zu gewiesen. Alle .htm dateien die mit ‘pp-’ beginnen leiten per .htaccess auf die weiter.php um, die entsprechende ID wird dabei als Parameter weitergegeben. Bots sollten natürlich ausgesperrt werden.
Meiner Meinung nach könnte sowas das Problem mit den Affiliate Links elegant genug lösen, ohne das die Klickrate sinkt!
Viele Grüße
Hanno
2.
Axel
schrieb am 12. May 2007 um 13:10
Hi Hanno,
danke für deine Ergänzung. Das man die Links zur Weiterleitung mit modrewrite umschreiben kann, habe ich vorausgesetzt. Ansonsten entspricht dies doch meiner ersten Variante.
Wobei ich für viele Deeplinks bisher keine bessere Methode kenne als die Links zu verschlüsselten. Ein mitführen der ganzen Links in einer separaten Datenbank ist wohl zu aufwendig. Oder hast du oder jemand anders da noch eine andere Idee?
3.
Hanno Mühlbrandt
schrieb am 12. May 2007 um 16:55
Hallo Axel,
du kannst die entsprechenden Parameter (Produk ID, Suchbegriff etc.) doch einfach mit übergeben, so bräuchtest du auch nur eine URL in die Datenbank einfügen. Der Aufwand ist natürlich (ein wenig) größer als bei einer einfachen Verschlüsselung.
Das die Mod Rewrite Methode nur eine Abwandlung deines Vorschlags ist, ist mir schon klar. Ich hielt das trotzdem für erwähnenswert, da ich die Erfahrung gemacht habe, das statische Links um einiges besser angenommen werden.
Wenn man wirklich große Massen an Affiliate Links hat und die Weiterleitung durch Cloaking vor den Bots versteckt, hat das sicherlich auch noch einen (sehr) kleinen SEO Effekt (Vermutung)
4.
Axel
schrieb am 12. May 2007 um 18:33
Hi Hanno,
dass es mit immer den gleichen Parametern so machbar ist, ist klar, aber wenn es doch wie z.B. beim Affilinator zig unterschiedliche URLs sind, was machst du dann?
5.
Hanno Mühlbrandt
schrieb am 12. May 2007 um 21:10
Hey Axel,
(theoretisch) sollte das kein Problem sein. Hier mal ein Beispiel wie man das mit dem Affilinator machen könnte:
Linktext
Ich habe hier höchstwahrscheinlich irgendwelche Variablen durcheinander gebracht (bzw. hab auch welche erfunden ;)), darum mach ich das nochmal ‘auf deutsch’:
Linktext
Ich denke all diese Daten lassen sich mit dem Affilinator abrufen
So, die Parameter eines affilinet Deeplinks sehen folgendermaßen aus:
ref=292371&site=1744&type=text&tnb=11&subid=&pid=1043002
Kleine Erläuterung: (Fehler nicht ausgeschlossen)
ref = affilinet ID
site = anscheinend die ID das Partnerprogramms
type = ist wohl konstant, also egal
tnb = keine Ahnung, spielt aber anscheinend keine Rolle (ist immer gleich)
subid = wegen Tracking und so ne
PID = Die ID das Produkts auf das der Deeplink zeigt
So jetzt machst du nur noch einen Eintrag in die .htaccess:
RewriteEngine on
RewriteRule pp-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).html$
[affilineturl]/click.asp?ref=$1&site=$2&type=text&tnb=11&subid=$3&pid=$4
Vom Prinzip her müsste das jetzt klappen. Ich hoffe du kannst meinen Ausführungen folgen
Viele Grüße
Hanno
6.
Hanno Mühlbrandt
schrieb am 12. May 2007 um 21:12
argh tut mir leid, das artet ja in Psamming aus:
href=”pp-[affilinet-id] ]-[id des Partnershops]-[sub id]-[id des Produkts].html”>Linktext
7.
Axel
schrieb am 12. May 2007 um 23:00
Hi Hanno,
gefällt mir gut, wenn sich andere Gedanken machen und wir dadurch vielleicht zu einem besseren System kommen.
Das Problem, dass es mit den Affilinetlinks gibt ist folgendes:
Wie du schon bemerkt hast, gibt es dort diesen Link mit pid, aber das ist nicht immer der Fall, da viele Shops ihre eigenen kompletten URLs angeben mit diurl. Und was machst du da?
8.
Hanno Mühlbrandt
schrieb am 13. May 2007 um 11:12
Guten Morgen Axel,
Ansatz:
so, damit habe ich jetzt mal nicht gerechnet. Eine technische Lösung habe ich dafür jetzt allerdings auch gefunden, ob die wirkliche Umsetzung allerdings sinnvoll ist, musst du mir beantworten
Die Links sehen nur noch so aus:
pp-[produkt-id].html
Jetzt kannst du einfach den Inhalt von … aus der zu dem Produkt gehörenden XML Dateien holen und weiterleiten.
Viele Grüße
Hanno
9.
Axel
schrieb am 13. May 2007 um 11:20
Hi Hanno,
das funktioniert leider nicht, da Affilinet bei den besagten Shops damit nicht korrekt weiterleiten ohne die Deeplink-URL.
10.
Hanno Mühlbrandt
schrieb am 13. May 2007 um 12:07
Hallo Axel,
hm das ist komisch. Ich hab das ganze jetzt mal ein wenig genauer anhand eines Produktes von Cyberport untersucht, die machen das ja über diurl.
Als Produkt ID hab ich mal 52164458 genommen. Die decodierte URL die der Affilinator nutzt entspricht haar genau der, die ich auch durch eine Abfrage der XML Daten geliefert bekomme (siehe Deeplink1 Tag). Ich habe mir das auch folgendermaßen gedacht:
1. Ein Produkt wird aufgerufen (hier einfach mal das Produkt mit der ID 52164458)
2. Der Affilinator generiert alle Daten und dazu noch eine HTML Datei die so oder so ähnlich ausieht:
pp-52164458.html
In dieser Datei befindet sich dann einfach nur eine Weiterleitung zu dem entsprechenden Produkt (Deeplink URL kann ja auch der XML Datei entnommen werden)
3. Für eine bessere Performance kann die Datei ja noch im Chache gespeichert werden.
Oh ich merke gerade warum es Verständniss Probleme gab:
Die 3 Punkte sollten eigentlich noch von dem Tag DeepLink1 umschlossen werden, tut mir leid
Viele Grüße
Hanno
11.
Axel
schrieb am 13. May 2007 um 14:50
Hi Hanno,
ich dachte ich habe dein System verstanden, ist aber wohl nicht so.
Du generierst eine extra Datei pro PID? Das sind dann unzählige Dateien, die selten gebraucht werden.
Oder willst du in der Weiterleitung die XML-Dateien durchsuchen, wo der Weiterleitungslink steckt?
Mit der reinen PID funktioniert das wie gesagt bei mir nicht immer. Siehe Produkte von Kinderlampe (vielleicht heißt der Shop auch etwas anders).
12.
Hanno Mühlbrandt
schrieb am 13. May 2007 um 15:27
Heyho Axel,
ich hab mir das ganze nochmal für Kinderlampe angeschaut. Ich bewerbe den Shop leider nicht und kann deswegen nicht in die XML Datei schauen, der Link ist aber genauso wie bei Cyberport aufgebaut!
Fakt aber ist ja, dass man bei Affilinet mit der PID alle weitere Informationen, die als XML gespeichert sind, abrufen kann (kannste hier ja mal schauen, aber das wirst du ja sicherlich eh kennen. Ruf am besten mal durch eine bestimmte PID die XML Daten für ein Produkt bei Kinderlampe ab.
Ganz unten wirst du dann das Tag DeepLink1 finden, was ihr ja sicherlich auch nutzt, um die Affilinet Links zu generieren.
Momentan werdet ihr ja einfach, wenn eine Detailseite o.ä. aufgerufen wird, per PID die XML Daten abrufen, den DeepLink extrahieren und per base64 Verschlüsseln.
Vielleicht ist das ja auch anders gelöst, aber ich denke mal, das die PID und auch der affilinet Link immer zur Verfügung stehen und auch nötig sind.
Mein Ansatz ist jetzt einfach, dass man an ein Script die PID übergibt und das Script dann aus der passenden XML Datei den Deeplink raussucht (der da ja zwangsweise drin stehen muss) und den Benutzer dann weiterleitet. Das ganze dann noch mit ein wenig ModRewrite verschönern und man hat Links die für SuMas wie auch Surfern nicht alle Affilliate Links erkennbar sind.
Das mit dem Cache ist wirklich ne blöde Idee, muss ich dir 100%ig zustimmen
Wenn da Interesse besteht, kann ich mal meine Python Kenntnisse suchen (lang lang ists her ;)) und versuchen eine kleine Demo zu coden, von PHP hab ich leider nicht viel Ahnung
Ich hoffe dir geht die Diskussion nicht aufn Wecker
13.
Axel
schrieb am 13. May 2007 um 15:58
Hallo Hanno,
die Diskussion ist auch für mich hilfreich um an neue Ideen zu kommen. Doch scheint es mir so, dass ich heute etwas träge im Verstehen bin.
Jetzt lese ich aus deinem Posting heraus, dass du den Deeplink über die Affilinetschnittstelle mit PID holen willst. Klar ist das möglich, das hat aber ein nicht zu unterschätzender Traffik für den Shop und auch für Affilinet zur Folge. Was ich aktuell als nicht sehr sinnvoll halte, da es ja nicht nur Deeplinks in der Detailseiten gibt, sondern auch in den Kategorien und der Suche und wenn da die Bots kommen…
Eine Möglichkeit die ich sehe, wäre eine Datenbank, die ständig alle PIDs und ihre URLs abspeichert. Und wenn mal keine PID da ist, holt man diese halt notgedrungen bei Affilinet. Ist aber ein erheblicher Aufwand. Und ob es das Wert ist?
Lieber wäre mir, wenn Affilinet über die PID von sich aus immer korrekt weiterleiten würde ohne DIURL und sonstige shopbezogene Parameter, also nur REF,SUBID und PID.
14.
Hanno Mühlbrandt
schrieb am 13. May 2007 um 16:06
Hallo Axel,
ja ich habe mir auch schon gedacht, dass das ein recht große Belastung ist, darum auch der Vorschlag mit dem Cache, was allerdungs auch eher eine suboptimale Lösung wäre.
Eine Datenbank mit für die Daten ist halte ich für ein wenig übertrieben. Am besten wäre es wirklich, wenn affilinet DIURL abschafft, dann wäre das ja ohne Probleme möglich. Vielleicht kommt ja irgendwann mal der Tag
15.
Florian
schrieb am 28. December 2007 um 00:59
Hallo Ihr
Ich habe den Beitrag gelesen und bin sehr interessiert.
Allerdings komme ich nicht so recht klar!
Was muss ich genau machen?
Der Link:
Link
weiter.php:
$URL_OUT = base64_decode($_REQUEST[’link’]);
header(”Status: 301″);
header(”Location: ” . $URL_OUT);
echo “Zum Ziel“;
Was muss ich noch machen?
Gruß Florian
16.
Axel
schrieb am 28. December 2007 um 10:49
Hi Florian,
die weiter.php ist für base64 verschlüsselte Links gedacht. Wenn du da nummerierte Links(’1′) übergibst, musst du eine Zuweisung in der weiter.php machen.
if ($_REQUEST['link']=='1') $URL_OUT='http://www.link1.tdl';