Hallo Luca,
sowas lässt sich relativ simpel mit Test-Frameworks machen, die eigentlich zum durchtesten von Web-Frontends benutzt werden. Das ist im wesentlichen genau das was du suchst: Ein automatisiert steuerbarer Browser. Gemacht habe ich sowas ähnliches mal mit Selenium:
Einfach im normalen Browser das Addon "Selenium IDE" herunterladen. Dann ein neues Projekt anlegen, den Ablauf aufzeichnen (Start Recording) und zum Schluss alles als .side-File abspeichern.
Dann in der Kommandozeile `selenium-side-runner -c 'browserName=chrome goog:chromeOptions.args=[headless]' -w projectfile.side` und ab geht die Post. Hat natürlich ein paar Probleme:
- JS basiert, ist auch nicht programmiert sondern nur eine Liste von Events - braucht viele Abhängigkeiten (neben chromium chromium-driver und den selenium-side-runner, der nicht mal in den repos ist) - genauso Ressourcenhungrig wie chromium
Selenium kannst du auch direkt aus Python oder Java (?) heraus benutzen. Habe ich auch schon gemacht, war aber für meine Nutzfälle zu aufwändig.
Beste Grüße Hannes
PS: Wenn du aus dem call das "headless" weglässt, kannst du auf deinem lokalem System dem Browser beim Arbeiten zuschauen.
On 29.09.20 11:53, Luca Bertoncello wrote:
Hallo Leute!
Ich habe ein kleines Problem und keine Ahnung wie ich anfangen kann, das zu lösen...
Es gibt ein Portal, bei dem ich ein Konto habe und bei dem ich einige Dateien regelmäßig herunterladen will. OK, curl wäre eine gute Idee, ABER, die Dateien kann ich herunterladen nur wenn ich eingeloggt bin (obwohl diese Dateien frei und open sind). Gut, das ist die Entscheidung der Betreiber des Portals und ich respektiere es.
Ich könnte curl die paar Cookies geben, die ich im Browser habe, und das so lösen, aber ich würde gern, dass das ganze vollautomagisch passieren würde, aber nicht dass ich mich erstmal mit dem Browser anmelde, die Cookie hole und in eine Datei speichere, dann das kleine Skript ausführe, dass alles herunterlädt...
Das Login ist allerdings eine relativ komplexe Form, die viel mit Javascript arbeitet, und curl kann kein Javascript...
Weiß jemand, ob ein kleines Browser existiert, die ich per Kommandozeile ansteuern kann? Bzw., weiß jemand, wie ich z.B. Firefox in "headless-Modus" starten kann und sagen, dass er sich einloggen soll und die paar Dateien herunterlädt?
Ich freue mich auf eure Vorschläge und Ideen.
Danke Luca Bertoncello (lucabert@lucabert.de)