Hallo,
Moin moin und ein frohes neues Jahr erstmal
danke erstmal für die Antwort
Dafür nicht.
Also es geht darum, dass ich verschiedene Angebote auf
verschiedenen Webseiten lese (automatisiert). Viele Seiten
(z.B. ebay) haben Angebotsnummern. Ich kann mir also in einer
Datenbank merken: Am (Datum) gab es den Artikel (Irgendwas)
zum Preis (x) vom Anbieter (y). Wenn ich mir dazu die
Artikelnummer (nnn) merke, habe ich die Möglichkeit diesen
Artikel bei einer späteren Abfrage wieder zu identifizieren.
Also Artikel mit der Nummer (nnn) ist in der Datenbank
vorhanden, wenn sich was geändert hat (Preis z. B.) liegt eine
Änderung an einem bereits beobachteten Artikel vor.
Das Problem tritt nun bei Amazon auf: Es geht hier um die
Marketplace Angebote: Wenn ich mir die Seite mit den Angeboten
zu einem bestimmten Buch aufrufe, kann ich aus dem Quelltext
der Seite zu einem einzelnen Angebot folgende Angaben
extrahieren: Anbieter-Name, Anbieter-ID (eine eindeutige und
wiederkehrende Zeichenfolge), Preis (klar …), eine Session
ID (wird im Header und im Body übertragen, etwas so:
270-4147959-3863683) und zu jedem Artikel eine Offering ID
(verkürzt: „pHuSWV2ZYOvvkPpXRG0YsrViV9k%2…vjpBAGBk%3D“).
Diese ist offensichtlich URL encoded (%3D). Wenn man sie mit
urldecode() behandelt, bekommt man einheitlich lange Strings
mit einem „=“ am Ende. Das spricht für base64 Codierung.
Leider ergibt base64_decode() auch nur Zeichensalat
(„FUÀîЙ…—Ȍ賊å“). Soweit war ich schon allein gekommen.
Hier würde ich wie mein Vorredner auch die API von Amazon benutzen, denn genau dafür sind diese Services ja da.
Es ist so, dass sich die Session ID und Offering ID bei jedem
Aufruf (Neuladen) der Seite ändern. Ich kann also in diesem
Fall die Offering ID nicht einfach als Identifizierung eines
bereits gelesenen Artikels verwenden. Eine Kombination aus
Verkäufer Name und / oder Preis und ISBN funktioniert nicht,
da z. B. ein und derselbe Anbieter auch mehrere Exemplare des
gleichen Artikels anbieten kann (das findet man bei beliebten
Büchern wie z. B. Harry Potter schnell).
Ich vermute, dass es sich bei der Offering-ID nicht um die ID des Artikels handelt, sondern eher um die angezeigten Artikel bei „Kunden, die diesen Artikel gekauft haben haben auch folgende Artikel gekauft“ (oder so ähnlich). Das würde in meinen Augen deutlich eher einen Sinn ergeben. Da sich diese Angabe wahrscheinlich an ihrem Such-Verhalten auf Amazon und der sich stetig ändernden Statistik unterliegt, wird die ID der Angebote vermutlich jedes Mal neu errechnet oder was weiß ich, was dahinter steht. Ich bezweifle jedenfalls, dass es etwas mit dem Artikel ansich zu tun hat.
Amazon brauche ich nicht zu fragen, da die in dieser Hinsicht
kaum kooperativ sein dürften. Ich vermute nun, dass sich in
der Offering ID ein gleichbleibender Anteil (Artikel ID) und
ein sich ändernder Anteil versteckt (das habe ich mir
ausgedacht, weil das bedeutet, dass die Amazon Server nicht zu
jeder Anfrage sich alle Details in Datenbanken merken
müssten). Das muss natürlich nicht zwingend so sein, aber um
es heraus zu finden, würde ich gern versuchen, diese IDs
entsprechend zu analysieren. Naheliegend fände ich, dass der
Server die in Website übermitteten Daten (Offering ID und
Session ID) benutzt um das Angebot zu identifizieren (z. B.
wenn der Artikel in den Warenkorb gelegt werden soll). Es
könnten weitere Angaben darin codiert sein, wie z. B.
Verkäufer Name oder ID, die sich aber nicht ändern. Ich
brauche auch nicht den tatsächlichen Klartext, es würde zur
Lösung der Aufgabe reichen, wenn sich aus diesen Angaben zu
ein und demselben Artikel sicher bei jedem Aufruf eine
gleichbleibende ID errechnen ließe.
Hier habe ich einen Anhalt: Die ID eines Artikels befindet sich in der URL. Als Beispiel:
http://www.amazon.de/Kosmos-6930150-Die-Siedler-Cata……
Das ist der Link zu „Die Siedler von Catan“. Alles ab dem „ref=[…]“ kann man getrost vergessen, das sind Parameter, die mit dem Artikel selber nichts zu tun haben.
Direkt nach www.amazon.de/ folgt einmal der Titel des Artikels, der in diesem Fall einfach nur etwas mit der Suchmaschinen-Optimierung zu tun hat.
Und jetzt wird es interessant: Das dp/ und der danach folgende String sind die ID des Artikels. Man kann den ersten Teil auch einfach weglassen und statt der obigen URL einfach nur:
http://www.amazon.de/dp/3440693015/
schreiben und kommt trotzdem zum Artikel. Hier wird vermutlich mit mod_rewrite oder einer ähnlichen Technik gearbeitet, um aus dieser „Pfadangabe“ einen Parameter zu machen. Der Parameter heißt also dp und der Inhalt ist der nachfolgede String. Dieser besteht manchmal auch aus einer Kombination von Zahlen und Buchstaben, in diesem Beispiel ist es jedenfalls nur eine Zahl.
Ich hoffe, dass das weitergeholfen hat, wenn du weiterhin manuell in den Artikeln rumwerkeln möchtest!?
Es ist natürlich nicht sicher, dass das funktioniert, aber ich
fand die Idee der Überprüfung wert.
Also die Fragestellung: Ich habe beliebig viele Paare aus etwa
140 Byte langen Zeichenfolgen und 17 Byte langen Zahlenfolgen,
die als zusammen gehörig angesehen werden. Kann ich mit einem
Verfahren relativ schnell heraus finden, ob die in einer
gleichbleibenden Beziehung zueinander stehen? Lese mich seit
ein paar Tagen durch allerlei Websites zur Kryptoanalyse aber
bis jetzt habe ich noch nichts passendes gefunden. Und im
Gegensatz zu Bletchley Park (Enigma) brauche ich garnicht den
originalen Inhalt…
Jörg
Viel Erfolg und beste Grüße
Lutz