PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gelöschte Bilder eines namhaften Imageboards wiederherstellen



ChEeTaH182
12.08.2017, 11:57
Hallo zusammen,
ich habe einen Crawler für ein namhaftes deutsches Imageboard (pr Zero gramm) geschrieben, welcher alle Bilder speichert, die gepostet werden. Hauptsächlich habe ich das getan um gelöschte Bilder und Kommentare wiederherstellen zu können (Stichwort oc ;)), was an sich auch gut funktioniert. Der Crawler crawled alle 10 Sekunden, dadurch kriege ich jedes Bild, da die Mods eine Weile brauchen, bis sie ein Bild gelöscht haben.

Problem:
Da die Bilder sofort vom Server gelöscht werden muss ich alle Daten bei mir lokal im Speicher halten und dumpe sie auf die Festplatte, sobald das Bild auf der originalen Seite gelöscht wurde. Früher blieb der Bildlink noch eine Weile erhalten, ich konnte das Bild also erst runterladen wenn der Eintrag gelöscht wurde. Nachdem mein Crawler aber eine Weile lief haben sie das geändert lol. Wie man sich denken kann braucht das je nach Bilderanzahl eine Menge Speicherplatz und ist nicht gerade elegant.

Vor einer Weile hat ein Mod folgendes gepostet: (dieurl)/new/2061774
Das ist die Backendansicht, bei dem angezeigt wird, was gelöscht wurde und wenn man genau hinschaut sieht man, dass dahinter ein Link zu dem Bild im Cache ist. Soweit ich das sehen konnte wird mit nginx und Cloudflare gecached. ich konnte 5 verschiedene IPs identifizieren, von denen der Content kommt.
Die Frage ist nun, wie komme ich an das Bild im Cache heran? Kennt sich jemand mit Cachingtechniken oder Cloudflare aus und kann mir ein paar Tipps geben?

Danke euch schonmal! :)
Wenn ich Erfolg haben sollte kann ich das Script (Gibt eine Java und eine Python3 Version) gerne ins GIT hochladen :)

Lindor
12.08.2017, 13:37
Die Frage ist nun, wie komme ich an das Bild im Cache heran? Kennt sich jemand mit Cachingtechniken oder Cloudflare aus und kann mir ein paar Tipps geben?
Hinter diesem "cache" wird sich einfach ein Link verstecken auf dem das Bild zwischengespeichert ist. Dieser Link kann aber zu einem beliebigen Server gehören und der Pfad ist potentiell auch beliebig (komplett unbekannte Domain mit zufälligem Pfad/Dateinamen). Rein technisch gibt es da vermutlich keinen Weg die Links zu finden. Da bleibt nur mehr oder weniger systematisches Raten übrig. Es wäre auch denkbar, dass der Cache Link noch aus der Zeit stammt, als Bilder nicht direkt gelöscht wurden und er zwischenzeitlich nicht mehr funktioniert.

Hast du mal ein Beispiel für ein gelöschtes Bild?

ChEeTaH182
12.08.2017, 13:46
Hast du mal ein Beispiel für ein gelöschtes Bild?
http://(url)/2017/08/12/b1bb3065ab838e7b.jpg

Ich habe auch schon einiges rumprobiert, es gibt keine auffälligen HTTP Header oder sonstiges :/ Das Bild ist sofort weg, sobald es gelöscht wird. Ich vermute der Cacheproxy gibt einfach ein 404 zurück und das Backend kann noch weiterhin auf die Originaldatei zugreifen bis die dann auch gelöscht wird.

Wenn du ein Bild haben möchtest, bevor es gelöscht wird, warte einfach ne Weile auf new und rufe die Seite dann in nem neuen Tab auf. An Sprüngen in der ID die größer als +1 sind erkennst du dann gelöschte Bilder.

Die Seitenbetreiber würden auch davon profitieren, da ich nicht mehr alles downloaden muss :D

Leange
13.08.2017, 13:54
Hi

Könntest auch nen externen webspace oder so als cache nutzen, nicht optimal aber dein speicherproblem wäre gelöst.

Leange

ChEeTaH182
13.08.2017, 15:23
Naja nicht direkt, die Belastung für die Seite ist trotzdem noch da und der Code wäre etwas weniger aufwändig. Der Speicher ist nicht das Problem. Ich habe ja nicht vor ein Komplettbackup anzulegen. Meines Wissens nach sind das ein paar TB im zweistelligen Bereich.

Benu
14.08.2017, 18:14
Amazon Cloud holen, da die Fotos draufladen, mittels API von einem unmetered VPS oder Root holen und mit Cloudflare cachen. Du hättest zwar noch den Erst-Traffic (bis es gecacht ist), aber würdest dir den Speicherplatz sparen.
Verstößt allerdings gegen die AGB und wenn du erwischt wirst, verlierst du deine Cloud. Cloud hat übrigens unlimitierten Speicherplatz.

ChEeTaH182
15.08.2017, 12:11
Amazon Cloud holen, da die Fotos draufladen, mittels API von einem unmetered VPS oder Root holen und mit Cloudflare cachen.
Nice, das kannte ich noch nicht. Das Problem ist, dass da nicht nur Bilder hochgeladen werden sondern auch Videos :)
naja notfalls könnte man die Videos mit Bildendung versehen, die Frage ist nur ob die das checken.

Leider habe ich noch nicht den optimalen Weg gefunden, aber ich fürchte den wird es nicht geben :( Danke für die Ideen