Webseiten-Downloader gesucht

OP #7622671
Lesenswert?

Foobar schrieb:

Und was soll der dann speichern? Einen Screenshot?

Nein, es soll eine Kopie der gesamten Website heruntergeladen werden – in html.

Jack V. schrieb:

Man kann Chromium headless starten und die damit gerenderte Seite speichern.

Das dürfte so ziemlich jeder Browser können – nur muss dann ein Sklave vor dem Bildschirm sitzen, der das tut, was ich gerne automatisieren würde.

Achim K. schrieb:

https://www.httrack.com/page/2/en/index.html

Das Teil habe ich probiert – es kann es definitiv nicht.

Vermutlich müsste das, was ich suche, irgend eine NodeJS-Geschichte sein.

#7622779
Lesenswert?

Und was soll der dann speichern? Einen Screenshot?

Nein, es soll eine Kopie der gesamten Website heruntergeladen werden – in html.

Das würde nur in trivialen Ausnahmefällen funktionieren. Dynamische Webseiten sind ein verteiltes Programm: ein Teil läuft im Browser, der Rest auf einem oder mehreren Servern. Du bekommst nur den Browser-Teil. Wie soll z.B. eine der z.Zt. beliebten "endlos scrollenden Seiten" abgespeichert werden?

Dazu kommt noch, dass viele Serverbetreiber das automatische Abgrasen ihrer Seiten nicht mögen und deshalb Captchas einsetzen oder z.B. Cloudflare vorschalten.

Für einige Seiten gibt es spezielle Scraper (z.B. für youtube). Um welche Seite geht es denn?

#7622789
Lesenswert?

Moriz schrieb:

Ich suche einen Webseiten-Downloader der unter Linux läuft, der auch mit dynamischen Seiten klar kommt – er müsste also js-Skripte ausführen können.

Und was macht man mit Seiten die dynamisch Daten von einem Backend bekommen? Und wieso sollte der Downloader js Skripte ausführen? Das macht nach wie vor der Browser. Der Downloader muss nur alle Skripte runterladen.

#7622799
Lesenswert?

Achim K. schrieb:

Nicht mehr ganz aktuell, aber einen Versuch wäre es wert: https://www.httrack.com/page/2/en/index.html

Funktioniert aber mM. immer noch am besten. Das Projekt wird scheinbar nach längerer Pause wieder weitergeführt, und findet sich jetzt aber auf https://github.com/xroche/httrack. Muß man sich aber selbst zusammenbauen, und läuft mW. derzeit nur unter Linux, bzw. ohne GUI nur als Kommandozeilentool. Aber soviel mehr kann es wohl zumindest bei meinen Tests auch nicht.

Alternativ wäre noch Cyotek Webcopy zu erwähnen, was vergleichbar mit HTrack ist. Was das eine nicht kann, kann vielleicht das andere ... (gibts aber, wenn ich mich noch recht erinnere, nur für Windows, lief aber bei meinen Tests auch unter wine).

(Firma: 1984now) #7622814
Lesenswert?

Moriz schrieb:

Ich suche einen Webseiten-Downloader der unter Linux läuft, der auch mit dynamischen Seiten klar kommt – er müsste also js-Skripte ausführen können.

Es kann da keinen universellen Downloader geben.

Mit der JS-Kacke (allgemeiner: mit allen aktiven Inhalten) hat man die Kontrolle über seinen Rechner weitgehend verloren. Schützen kann man sich nur dadurch, dass man aktive Inhalte eben nicht ausführt.

Was aber natürlich inzwischen dazu führt, dass man auch die wenigen echten Inhalte vieler Webseiten kaum noch rauspicken kann.

Die am Besten funktionierende Möglichkeit, die ich kenne, ist der "ferngesteuerte Browser". Aber man muß natürlich die "Steuerung" an jede konkrete Site anpassen. Und wenn man damit fertig ist, ändert der Gegner wieder was und man fängt von vorn an...

Wie soll ein relativ doofer und unflexibler Downloader das leisten können?

Aber egal, das alles ist nur ein Zwischenspiel. Fast überall muss man sich inzwischen in irgendeiner Form anmelden. Es ist absehbar, dass es praktisch durchgängige Praxis wird, das Websites ohne Anmeldung überhaupt keine Information mehr rausrücken.

So wie es heute schon viele gibt, die ohne aktives JS nicht mal mehr eine Fehlermeldung liefern, sondern nur noch eine vollkommen leere Seite.

#7622833
Lesenswert?

René H. schrieb:

Aber wozu braucht man fremde Webauftritte als Offlineversion?

Zum Archivieren. Ist dir mal aufgefallen, wieviele Seiten von früher™ mit der Zeit verschwunden sind?

Ein Problem dabei ist, dass viele heutige Seiten so zusammengeklickt werden, dass sie beispielsweise Bilder erst nachladen, wenn diese angezeigt werden sollen; wenn man also soweit runtergescrollt hat. Wenn man die statische Seite samt Scripten mittels etwa wget oder auch mit der „Seite speichern“-Funktion des Browser lädt, hat man diese Bilder dann nicht, und wenn die ursprüngliche Seite weg ist, bekommt man sie auch nicht. Und wenn die Information in den Bildern wichtig war (Schaltpläne, Anschlussbelegungen, […]), hat man halt nutzlosen Datenmüll. Um die Bilder mitspeichern zu können, müssen die entsprechende Scripte beim Laden der Seite ausgeführt werden.

(Firma: 1984now) #7622890
Lesenswert?

Mario M. schrieb:

Wenn Du des Englischen mächtig bist, google mal nach "headless chrome crawler".

Naja, das ist das Konzept des "ferngesteuerten Browsers". Man muß halt die "Fernsteuerung" für jede Website basteln und ständig den Änderungen auf dieser Site anpassen.

Das konkret im Thread erwähnte Beispiel Telepolis ist da noch sehr pflegeleicht. Die machen nicht allzu oft was. Kostet schließlich auch auf ihrer Seite Arbeit.

Aber wenn plötzlich massenhaft automatische Downloads erfolgen würden, ist natürlich schwerstens zu erwarten, dass sehr schnell was geändert wird. Erst Nadelstiche, dann immer mehr.

Gegen einzelne speziell erstellte Downloader machen die nix, weil es ihnen nicht mal auffällt, dass die existieren. Sowas geht einfach im Rauschen der Traffic-Überwachung unter. Sobald aber etwas auch für die Masse der Idioten leicht verfügbares und benutzbares existiert, und das dann auch genutzt wird, fällt das natürlich auf. Und natürlich erfolgen dann die entsprechenden Gegenmaßnahmen.

Wie sowas bei wirklich hochdynamisch "besaugten" und "gepflegten" Sites abläuft, kann man z.B. bei YT verfolgen. Da übrigens auch die ersten Ansätze zum Zwangs-Accounting.

Und das alles wird so weiter gehen. Der ewige Kampf der Content-Besitzer mit denen, die den Content entgegen der Intentionen der Besitzer (oder vielleicht auch nichtmal entgegen, sondern bloß darüber hinaus) nutzen wollen.

Alles nix wirklich Neues.

Gast #7622942
Lesenswert?

Jack V. schrieb:

Seit wann führt wget JS aus?

Irgend wie macht das für mich auch überhaupt keinen Sinn! Wozu soll der Downloader das Script ausführen. Das ist doch clientseitiges Scripting und wird doch erst beim Betrachten der Seite im Browser ausgeführt. Was soll den der Downloader ausführen z.B. auf einer Seite mit Rechenfunktionen in JS?

Eher wird doch ein Webserver mit PHP etc. benötigt, wenn die Seiten entsprechenden Code serverseitig ausführen. Beispiel: SELFHTML. Da kann man gleich das ganze Paket inkl. Server runterladen. Ich verwende lokal für mich auf dem Rechner gerne den in PHP eingebauten Mini-Webserver.

ciao

Marci

Gast #7622945
Lesenswert?

Ob S. schrieb:

Fast überall muss man sich inzwischen in irgendeiner Form anmelden.

Zwar ein wenig OT, aber mich nerven viele Foren, bei denen man ohne Anmeldung keinerlei Grafiken, Code etc. anschauen kann. Das ist Mist, und wenn möglich lasse ich solche Sites links liegen.

ciao

Marci

#7622969
Lesenswert?

Marci W. schrieb:

Irgend wie macht das für mich auch überhaupt keinen Sinn! Wozu soll der Downloader das Script ausführen. Das ist doch clientseitiges Scripting und wird doch erst beim Betrachten der Seite im Browser ausgeführt. Was soll den der Downloader ausführen z.B. auf einer Seite mit Rechenfunktionen in JS?

Schrieb ich doch recht ausführlich: einige Seiten basieren heute auf Scripten, die dynamisch Sachen genau dann laden und anzeigen, wenn sie im Browser sichtbar werden. Diese Sachen (Bilder, Diagramme, Textboxen, komplette Inhalte, …) fehlen, wenn man plump die Seite lädt, ohne die Scripte auszuführen – weil’s eben diese Scripte sind, die den Inhalt laden, den man sichern möchte. Noch nie ’ne Seite gesehen, die Content nachlädt, wenn man nach unten scrollt? Einfach mal beispielsweise Youtube anschauen und schnell runterscrollen.

(Firma: 1984now) #7622971
Lesenswert?

Marci W. schrieb:

Irgend wie macht das für mich auch überhaupt keinen Sinn!

Du bist kein Programmierer, stimmt's?

Wozu soll der Downloader das Script ausführen.

Weil er sonst nicht an die Kekse kommt.

Das ist doch clientseitiges Scripting und wird doch erst beim Betrachten der Seite im Browser ausgeführt.

Genau. Aber den Inhalt des Scipts bestimmt der Anbieter der Web-Site, der kann darin im Prinzip fast machen was er will. Jedes JS-Script ist im Prinzip ein "Trojanisches Pferd", das der Anbieter der Website vor dein Tor fährt. Du hast nur die Wahl zu entscheiden, ob du es durch's Tor einlassen willst oder nicht. Wenn du es nicht einlässt, wird die Webseite nicht so aussehen, wie sie es könnte. Weil halt das Script fehlt, was den gewünschten Inhalt erst herunterlädt und in das DOM der angezeigten Seite einfügt.

Eher wird doch ein Webserver mit PHP etc. benötigt, wenn die Seiten entsprechenden Code serverseitig ausführen.

Das gibt es natürlich auch noch. Ist aber derzeit eher nicht so relevant.

Aber gerade wieder im Kommen. Warum? U.a.: um es einfachen Downloadern noch schwerer zu machen. Die können nämlich den clientseitigen Code nicht nur ausführen, sondern auch analysieren. Gibt es aber eine (für den Client nicht einsehbare) Softwarekomponente auf dem Server, wird es noch viel schwerer (praktisch fast unmöglich), das Zeug zu analysieren.

Gast #7622978
Lesenswert?

Jack V. schrieb:

Noch nie ’ne Seite gesehen, die Content nachlädt, wenn man nach unten scrollt?

Nee, natürlich nicht. ;-)

Im Ernst: was soll in Deinem Beispiel der arme Downloader machen? Die Seite/Liste so lange laden, bis nix mehr geht? Das kann dann recht viel Content sein...

Ich muss zugeben, mir ist gerade eingefallen, dass ich auch mal so eine Seite hatte mit JS. Und ich gebe zu, ich habe es dann irgend wann sein lassen, das offline zu speichern. War mir zu blöd. Und ich denke, da wird man wohl ums Handanlegen nicht herum kommen, oder?

ciao

Marci

#7622982
Lesenswert?

Es gibt auch zig Seiten wo die Inhalte nicht einfach downloadbar sein weil wohl zu geheime Bilder oder Infos meist oben dabei sind, wie z.B. das Logo des Seitentreibers oder das Impressum, da kann man bei manchen das nicht mal kopieren, aber Bilder sind es auch nicht.

Der Seitenquelltext gibt aber auch manches Mal zu denken, dort sucht man sich auch den Wolf. Manuelles Runterladen durch Speichern mit dem Browser u. dann gleich offline testen ob alles dabei ist.

Gast #7622998
Lesenswert?

Moriz schrieb:

Marci W. schrieb:

Im Ernst: was soll in Deinem Beispiel der arme Downloader machen?

Das Javascript ausführen und die Seite im Speicher so aufbauen, wie sie vom Browser angezeigt würde und statt sie anzuzeigen, den html-Text in eine Datei schreiben…

Macht Sinn ;-) <schäm>

ciao

Marci

#7623023
Lesenswert?

Moritz schrieb:

Ich meine Seiten wie www.telepolis.de, die die Links auf Artikel dynamisch erzeugen. Die Linkziele selbst sind dann statisch.

Gerade Telepolis[1] bereitet wenig Schwierigkeiten, geht ohne JS und ist sogar mit Text-Browsern (w3m, lynx, links2, elinks - können alle kein JS) benutzbar. Die a-href sind statisch.

[1] und auch heise.de

OP #7623029
Lesenswert?

Nur wenn ich einen Link im Browser kopiere und den dann im Seitenquelltext suche, finde ich ihn nicht.

Ähnliches gilt auch für die Schweizer Weltwoche.

Nachtrag: Scriptbeispiel aus telepolis:

1
<script type="application/ld+json">
2
    {"@context":"https:\/\/schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"url":"https:\/\/www.telepolis.de\/features\/Neue-Taktik-der-Letzten-Generation-Schoene-Reden-statt-Systemkritik-9652975.html"},{"@type":"ListItem","position":2,"url":"https:\/\/www.telepolis.de\/features\/US-Geheimdienste-Angriffe-auf-Krim-und-Schwarzmeerflotte-unterstuetzen-9654024.html"},{"@type":"ListItem","position":3,"url":"https:\/\/www.telepolis.de\/features\/Russland-lacht-ueber-Sanktionen-Oelgeschaeft-blueht-praechtiger-denn-je-9653990.html"},{"@type":"ListItem","position":4,"url":"https:\/\/www.telepolis.de\/features\/Maria-Montessori-Freiheitskaempferin-und-Vorreiterin-der-Inklusion-9653896.html"},{"@type":"ListItem","position":5,"url":"https:\/\/www.telepolis.de\/features\/IEA-schlaegt-Alarm-Methanemissionen-erreichen-trotz-Versprechen-fast-Rekordniveau-9653486.html"},{"@type":"ListItem","position":6,"url":"https:\/\/www.telepolis.de\/features\/Medien-Das-grosse-Versagen-in-und-nach-der-Corona-Krise-9653074.html"},{"@type":"ListItem","position":7,"url":"https:\/\/www.telepolis.de\/features\/Gesundheit-Streiks-und-Proteste-IT-Branche-kaempft-fuer-bessere-Arbeitsbedingungen-9652931.html"},{"@type":"ListItem","position":8,"url":"https:\/\/www.telepolis.de\/features\/Sahra-Wagenknecht-Appell-des-Papstes-zum-Ukraine-Krieg-richtig-9652961.html"},{"@type":"ListItem","position":9,"url":"https:\/\/www.telepolis.de\/features\/Eklat-in-Berlin-Bedroht-Aserbaidschan-Akademiker-in-Deutschland-9652786.html"},{"@type":"ListItem","position":10,"url":"https:\/\/www.telepolis.de\/features\/Leergefischt-In-Nord-und-Ostsee-schwimmen-immer-weniger-Fische-9652493.html"},{"@type":"ListItem","position":11,"url":"https:\/\/www.telepolis.de\/features\/Deutschland-im-Stillstand-Wie-Italien-uns-in-Sachen-Wachstum-ueberholt-hat-9652534.html"},{"@type":"ListItem","position":12,"url":"https:\/\/www.telepolis.de\/features\/Wikipedia-Selektive-Informationspolitik-fuer-Annalena-Baerbock-9652532.html"},{"@type":"ListItem","position":13,"url":"https:\/\/www.telepolis.de\/features\/USA-Israel-Allianz-Ist-Joe-Biden-wirklich-machtlos-gegenueber-Netanjahu-9652357.html"},{"@type":"ListItem","position":14,"url":"https:\/\/www.telepolis.de\/features\/Autopilot-Systeme-im-Test-Wie-sicher-sind-teilautomatisierte-Fahrzeuge-wirklich-9652000.html"},{"@type":"ListItem","position":15,"url":"https:\/\/www.telepolis.de\/features\/China-kaempft-um-technologische-Souveraenitaet-nicht-um-Dominanz-9651437.html"}]}
3
</script>

Also einwandfrei ein Skript…

#7623042
Lesenswert?

Nur wenn ich einen Link im Browser kopiere und den dann im Seitenquelltext suche, finde ich ihn nicht.

Dann suchst du falsch.

1
   ...
2
<script type="application/ld+json">
3
   {"@context":"https:\/\/schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"url":"https:\/\/www.telepolis.de\/features\/Neue-Taktik-der-Letzten-Generation-Schoene-Reden-statt-Systemkritik-9652975.html"},
4
   ...
5
    <article class="news row">
6
      <a href ="/features/Neue-Taktik-der-Letzten-Generation-Schoene-Reden-statt-Systemkritik-9652975.html"
7
        name="startseite.tp.anrissliste.1"
8
      >  <!-- die Leerstelle hinter href von mir, spamblocker -->
9
   ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren