Amazon Proxy – Teil 1: Amazon Werbung datenschutzkonform einbinden

Amazon Proxy Artikel Bild

Geld verdienen durch Einblenden von Amazon Werbung auf der eigenen Website oder im eigenen Blog – das klingt gut, wirft aber gleichzeitig viele Fragen auf wie:
Wie kann ich mich anmelden? Was gibts an Provision? Wie komme ich an die Werbemittel, sprich Produktbilder? Wie kann ich die Werbemittel datenschutzkonform einbauen? Und warum ist die Datenschutzgrundverordnung der Valentinstag der WordPress-Plugin-Programmierer?
Ziel dieser kurzen Artikelserie kann es nicht sein, alle Fragen um das Amazon PartnerNet zu beantworten, aber es wird eine Lösung aufgezeigt, wie sich Amazon Produktbilder unter Berücksichtigung des Datenschutzes in die eigene Website einbauen lassen. Und dazu gibt es eine Einführung in die Abfrage und Programmierung der Amazon Product Advertising API.

Im diesem ersten Teil der Artikelserie wird noch nicht programmiert. Hier versuche ich ein paar Grundlagen zu klären. Zum Beispiel, was es auf sich hat mit dem Amazon PartnerNet und was die Amazon Product Advertising API eigentlich ist. Danach reden wir über Datenschutz im Zusammenhang mit Amazon Werbung und schließlich kommt ein kleiner Einstieg in die Abfrage der Amazon Product Advertising API – also der Amazon Programmierschnittstelle.

Die nächsten beiden Artikel befassen sich dann mit der Realisierung eines eigenen Amazon Proxy Dienstes und dessen Einbindung in eine Web-Seite und einen WordPress Artikel.

Geld verdienen mit Amazon Werbung

Das Schlagwort heißt Amazon PartnerNet und wer das bereits kennt oder schon nutzt, der kann dieses Kapitel ruhig überspringen. Für alle anderen in kurzen Worten:
Bei Amazon verdient man an Provisionen. Inhaber von Websites oder Blogautoren stellen dazu Amazon Werbemittel auf die eigenen Seiten und wenn Besucher über diesen Weg zu Amazon gelangen und dann ein Produkt kaufen, dann fallen für den Webmaster ein paar Prozent ab.

Was braucht man dazu? Ein Nutzerkonto bei Amazon und eine Registrierung im Amazon PartnerNet. Dabei erhält man eine Amazon Partner-ID, das ist eine Kennung, an der Amazon dann erkennen kann, woher ein Käufer vermittelt wurde. Gleichzeitig gibts das Amazon PartnerNet SiteStripe, das ist eine schmale Zeile oberhalb der üblichen Amazon Webseite. Darüber kann man zum angezeigten Produkt Text- und Bilderlinks generieren, die die eigene Partner-ID bereits beinhalten und direkt in eine eigene Webseite eingebaut werden können. Das ist recht praktisch gemacht. Über diese Kopfleiste kommt man auch zu einer Auswertung der eigenen Verdienste.

Amazon PartnerNet SiteStripe

An dieser Stelle lässt sich also bereits mit Amazon Geld verdienen. Allerdings nur mit simplen Textlinks, mit Bildlinks oder mit von Amazon gelieferten Widgets, die man sich ebenfalls im PartnerNet erzeugen kann. Wer mehr will, für den gibt es die:

Amazon Product Advertising API

Das ist eine Programmierschnittstelle, zu der man sich über das PartnerNet extra einen Zugang beantragen muss. Bei der Anmeldung erhält man zwei weitere kryptische Zugangsschlüssel, den Amazon API Key und den Amazon Secretkey.

Diesen Zugang zur Amazon Product Advertising API benötigt man aber nicht nur, wenn man selber diese Schnittstelle programmieren möchte, sondern auch, wenn man WordPress Plugins nutzen will, die auf dieser API aufsetzen. Solche Plugins sind für WordPress Nutzer sehr praktisch, weil man nur einen Shortcode mit der Produktnummer (ASIN) in den Blogartikel einfügen braucht und das Plugin baut daraus eine komplette Werbeeinblendung.

Bevor wir tiefer in die Product Advertising API einsteigen, werfen wir erst einen Blick auf die Datenschutzaspekte bei der Nutzung von Amazon Werbung.

Warum ist Amazon Werbung kritisch in Sachen Datenschutz?

Es liegt mir fern, hier rechtliche Beratung geben zu wollen, dazu bin ich überhaupt nicht qualifiziert. Wer also rechtliche Auskünfte benötigt, der wende sich an den Rechtsanwalt seines Vertrauens. Ich möchte hier lediglich die technischen Aspekte beleuchten, wie Amazon Werbung funktioniert und wie dabei personenbezogene Daten laufen können.

Seit Inkrafttreten der Europäischen Datenschutz Grundverordnung (DSGVO) im Jahr 2018 haben wir alle, die wir Websites und Blogs betreiben, zahlreiche Umstellungen auf unseren Seiten vorgenommen, um den Anforderungen der DSGVO zu genügen. Dabei geht es um die Information unserer Webseitenbesucher, um das Einholen von Zustimmungen zur Datenverarbeitung, vor allem aber um die Minimierung der Erhebung, Verarbeitung und Weitergabe von personenbezogenen Daten. In diesem Rahmen haben wir unsere Websites verschlüsselt (https), Cookies abgeschafft oder die Nutzer um Zustimmung gebeten, Schriften und Programmierlibraries wie jQuery lokal am eigenen Server gehostet, Like-Buttons von sozialen Medien ausgebaut und YouTube-Videos so integriert, dass der Nutzer zustimmen muss, bevor tatsächlich eine Verbindung zu YouTube aufgebaut wird. Dies nur um ein paar griffige Beispiele zu nennen. Viele dieser Aktionen dienen dabei eigentlich nur einem einzigen Zweck:

Die Tatsache, dass ein Nutzer meine Webseiten besucht, soll Dritten (Google, Facebook, YouTube, …) nicht zur Kenntnis gelangen. Und auch nicht seine IP-Adresse.

Aber wie schaut es hier mit Amazon Werbung aus? Sicherlich unkritisch ist es, einen einfachen Textlink zu verwenden. Der Nutzer sollte erkennen können, dass er damit zu Amazon geleitet wird und kann selbst entscheiden, ob er das will. So lange er nicht klickt, wird keine Verbindung zu Amazon aufgebaut und Amazon erhält keine Daten.

Schwieriger wird es schon, wenn beim Aufbau der Seite bereits ein Produktpreis bei Amazon abgerufen wird. Und deutlich verständlich wird ein Datenschutzproblem, wenn es um die Einbindung vom Produktbildern geht. Denn die funktioniert typischerweise so:

  • Ein Anwender surft auf unsere Webseite (die eine Amazon Bildwerbung enthält)
  • Der HTML-Code der Seite enthält einen IMG-Tag für das Bild, das auf einem Amazon-Server liegt
  • Der Browser des Anwenders lädt die Webseite und wertet den HTML-Code aus
  • Der Browser erkennt den IMG-Tag und dass das Bild über eine externe Adresse zu beziehen ist
  • Der Browser fordert das Bild bei der hinterlegten Adresse, also direkt bei Amazon, an. Dazu baut der Browser des Anwenders eine Verbindung zu Amazon auf und Amazon erfährt die IP-Adresse des Rechners und einige Daten über Computer und Browser.

Wohlgemerkt, das alles geschieht bereits beim Laden der Webseite, der Anwender hat keinen Einfluss darauf, dass er eine Verbindung zu Amazon initiiert, wenn er nicht vorher die Datenschutzerklärung gelesen hat, dann weiß er es nicht mal.

Ob das datenschutzrechtlich in Ordnung ist oder nicht, das mag jeder selber beurteilen und/oder einen Fachanwalt befragen. Die Frage ist, ob man es nicht technisch besser lösen könnte.

Die DSGVO ist der Valentinstag der Plugin-Programmierer

Ist das nur mein Eindruck, oder haben andere den auch? Seit es die DSGVO gibt, haben viele vormals kostenlosen WordPress Plugins neue Versionen bekommen, die nun datenschutzkonform, aber auch kostenpflichtig sind.

Ich bitte mich nicht falsch zu verstehen. Wer ein gutes Plugin programmieren kann, der soll ruhig auch daran verdienen. Nur seltsam, dass seit der DSGVO viele Plugins ins kostenpflichtige Lager gewechselt sind, die alten Versionen, die nicht der DSGVO entsprechen, gibt es dagegen weiterhin umsonst.

Und natürlich ist es auch legitim und verständlich, wenn sich Blogger Plugins kaufen, die sie selber nicht programmieren können. Und damit kommen wir zum Kern dieses Artikels: Warum denn eigentlich nicht selber programmieren? Es muss ja nicht gleich ein WordPress Plugin sein.

Design eines Amazon Proxy

Kehren wir gedanklich zurück zur Problematik des Bilderabrufs von Amazon. Eigentlich ist das ja kein ungewöhnliches Problem. War das mit den Schriftarten nicht ähnlich? Vor der DSGVO hatten wir schöne Schriftarten beim Aufruf einer Webseite direkt bei Google beziehen lassen. Nun liegen die Schriften auf dem eigenen Server und der Browser muss keine Verbindung mehr zu Google aufbauen – Problem gelöst.
Oder YouTube Videos? Früher wurde beim Laden der Seite bereits ein Vorschaubild bei YouTube abgerufen. Jetzt haben wir ein Plugin installiert, das alle Vorschaubilder lokal cached, also auf dem eigenen Server zwischenspeichert – Problem gelöst.

Übertragen wir das auf Amazon Produktbilder. Die können wir leider nicht alle auf dem eigenen Server speichern. Amazon gestattet es nicht, Produktbilder in Masse abzusaugen und auch beim Cachen ist Amazon restriktiv. Allerdings ist für unseren Zweck ein dauerhaftes Speichern von Amazon Produktbildern auch gar nicht nötig, nachdem es an den Client (also den Browser) ausgeliefert wurde, kann es ja sofort wieder gelöscht werden.

Und in der Tat, so arbeiten auch die kostenpflichtigen Amazon Plugins für WordPress. Die sprechen in ihrer Beschreibung entweder von einem Cache- oder einem Proxy-Mechanismus, den sie implementieren, damit nicht der Browser direkt Amazon kontaktiert.

So ein Amazon-Proxy funktioniert folgendermaßen

  • Ein Anwender surft wieder auf unsere Webseite (die eine Amazon Bildwerbung enthält)
  • Der HTML-Code der Seite enthält jedoch keinen IMG-Tag für das Bild, sondern einen Platzhalter (div-Tag) und ein wenig JavaScript
  • Der Browser des Anwenders lädt die Webseite und wertet den HTML-Code aus
  • Der Browser erkennt den JavaScript-Code und führt ihn aus
  • JavaScript im Browser baut eine Ajax-Verbindung zum Amazon Proxy auf und fordert anhand einer Produktnummer (ASIN) eine Amazon Werbung an
  • Der Amazon Proxy ist nichts anderes als ein PHP-Programm auf unserem eigenen Server
  • Der Proxy tut nun Amazon gegenüber so, als wäre er der Client und fragt über die Amazon Product Advertising API die Produktdaten zur entsprechenden ASIN ab
  • Die Antwort ist eine XML-Datenstruktur, aus der der Proxy Titel, Produktbeschreibung und Preis herauslöst und ebenso die Adresse des Produktbilds bei Amazon
  • Nun ruft der Proxy auch dieses Bild ab und speichert es auf dem eigenen Server zwischen
  • Aus Titel, Beschreibung und Preis baut der Proxi ein HTML-Codeschnipsel zusammen, in das er auch ein IMG-Tag für das Produktbild integriert – aber mit Verweis auf das zwischengespeicherte Bild
  • JavaScript im Browser bekommt als Antwort das HTML-Codeschnipsel vom Proxy zurück geliefert und baut ihn in den Platzhalter ein
  • Der Browser wertet den neu hinzugekommenen HTML-Code aus und lädt das Bild vom Proxy Server (das dort nach 10 Sekunden gelöscht wird)

Der Ablauf ist im Vergleich zu oben ein wenig komplizierter geworden, weil der Proxy in der Mitte dazu gekommen ist. Der Vorteil bei diesem Konstrukt liegt aber nun darin, dass zur Ladezeit der Seite der Browser keinen Kontakt zu Amazon hat. Das erledigt statt dessen der Proxy für den Browser. Folglich sieht Amazon auch nur die IP-Adresse des Proxy Servers und nicht die des Computers des Anwenders. Problem gelöst.

Aber wie schaut es mit der Geschwindigkeit aus?

Kostet der Umweg über den Proxy nicht Zeit? Ja und Nein. Fatal wäre es in der Tat, wenn bereits PHP-Code in der Webseite beim Abruf der Seite Kontakt zu Amazon aufnehmen würde. Denn dann müsste erst die ganze Amazon-Kommunikation abgeschlossen sein, bevor die Webseite an den Browser ausgeliefert werden kann. So machen wir es natürlich nicht. Es wird zuerst die Seite an den Browser ausgeliefert, die der auch komplett anzeigen kann – bis auf die Werbung. Die wird dann vom Browser per Ajax nachgefordert. Das ist übrigens das erste A in Ajax (Asynchronous JavaScript and XML). Während JavaScript beim Proxy Daten anfordert, baut der Browser die restliche Seite auf und lässt auch Interaktion mit dem User zu. Die Werbung wird erst eingegliedert, wenn sie eintrifft und das ist spürbar später. Die Seite kommt also schnell, die Werbung verzögert.

Einführung in die Amazon Product Advertising API

Achtung: Seit Anfang 2020 gibt es die Amazon Product Advertising API (PA-API) in der Version 5.0, die vieles verändert. Und damit gibt es auch ein neues Scratchpad, das ein wenig anders funktioniert, als hier beschrieben. Über die Neuerungen der PA-API 5.0 informiert Teil 4 dieser Artikelserie.

Bevor es im nächsten Artikel um die Programmierung des Amazon Proxy geht, schauen wir uns zuerst die Product Advertising API von Amazon an, mit der unser Proxy dann kommunizieren soll. Dazu erst mal der Link zur Dokumentation.

Weil Ausprobieren aber viel geiler ist als Doku-Lesen, beinhaltet die Amazon Product Advertising API ein geniales Tool mit dem Namen Scratchpad. Das rufen wir auf und bekommen am Einleitungsschirm nochmal erklärt, dass wir uns vorher für das PartnerNet und die Advertising API anmelden müssen. Dann können wir links auf ItemLockup gehen und im Scratchpad eine Abfrage interaktiv formulieren.

Als erstes müssen wir alle unsere Zugangsschlüssel eingeben, dabei ist mit Associate Tag die Partner-ID gemeint, die wir bei der Anmeldung im PartnerNet bekommen haben. Access Key ID und Secret Access Key sind die beiden Schlüssel aus der Anmeldung für die Product Advertising API. Der Marketplace ganz oben steht für das Land – hier wählen wir webservices.amazon.de für Amazon Deutschland.

Jetzt können wir das Produkt definieren, das wir abfragen wollen. Typischerweise machen wir das über die Amazon Produktnummer, die ASIN, die jedes Amazonprodukt hat. Die ASIN findet man auf einer Amazon Produktseite unter Produktinformationen. (Bei Büchern heißt die ASIN übrigens ISBN-10.) Als IDType lassen wir also ASIN stehen und tragen die ASIN-Nummer darüber ins Feld ItemId ein.

Nun ist es noch wichtig das Konzept der Response Groups zu verstehen. Amazon bietet sehr umfangreiche Daten zu jedem Produkt. Die braucht man aber sicher nicht alle. Also hat Amazon Informationsgruppen geschaffen, die unter einem bestimmten Namen bestimmte Informationssammlungen zurück liefern. In der Doku ist das auch genau erklärt, wir können es aber auch einfach ausprobieren und die ResponseGroup Large auswählen, die sehr viele Daten liefern wird. Später kann man dann mit anderen Response Groups experimentieren – vielleicht tut es für den gewünschten Zweck auch eine (oder mehrere) kleinere.

Dann den Button Run request drücken und wir bekommen das Ergebnis angezeigt. Und das ist umfangreich. Zuerst wird die Abfrage noch einmal als unsignierte und signierte URL dargestellt. Dann am augenfälligsten der rendered response in Form einer fertig aufbereiteten Amazonwerbung mit Bild, Titel, Preis und Kauf-Button. Aufschlussreicher ist aber der Reiter XML response, auf den wir umschalten können.

Denn hier bekommen wir die komplette XML Datenstruktur angezeigt, die auf unsere Abfrage zurück kommt. Im Screenshot sieht man nur einen kleinen Ausschnitt davon, nämlich die Links auf verschieden große Produktbilder.

Ich empfehle, an dieser Stelle ruhig ein wenig mit dem Scratchpad zu spielen, das ist lehrreicher, als seitenweise Dokumentation zu lesen. Den XML response sollte man ansehen, bei verschiedenen Response Groups und sich abschließend das PHP Programmierbeispiel ganz unten. Auf dem wird dann der Amazon Proxy aufbauen, den wir im nächsten Artikel programmieren werden.

Zusammenfassung

Dass man mit Amazon Werbung als Webmaster Geld verdienen kann, das ist nichts Neues. In diesem Artikel habe ich zusammen gefasst, welche Anmeldungen dafür bei Amazon nötig sind, um auch die Product Advertising API nutzen zu können. Wer bisher schon ein WordPress Plugin für Amazon Werbungen nutzt, der hat diese Registrierungen und die drei erforderlichen Schlüssel bereits. Möglicherweise sind ältere Plugin aber nicht mehr auf der Höhe der Zeit, was den Datenschutz angeht. Ich habe oben dargestellt, welches Verhalten kritisch sein könnte und wie wir es besser machen können. Und abschließend haben wir uns – als Vorbereitung für eigene Programmierungen – die Amazon Product Advertising API im Scratchpad näher angeschaut.

Weitere Artikel in dieser Kategorie:

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert