Guten Abend,
Wie kann ich mit UrlDownloadToFile eine Seite herunterladen, die nur nach einem Login mit Benutzername und Passwort sichtbar ist?
Benutzername und Passwort habe ich bereits in Internet Explorer eingegeben und gespeichert. Ein Häkchen bei Angemeldet bleiben ist gesetzt.
Wenn ich versuche, mit UrlDownloadToFile eine Seite Herunterzuladen, wird nur die Anmelde-Maske heruntergeladen.
Gibt es irgendeine Möglichkeit die Seite herunterzuladen ?
vielen Dank und Grüße
Daten aus passwortgeschützte Seite herunterladen Topic is solved
Moderator: jNizM
Re: Daten aus passwortgeschützte Seite herunterladen
Hi,
Wie wäre es, wenn du deinen bisherigen Code und/oder ein konkretes Beispiel postest?
Denn so, wie du es jetzt beschrieben hast, kann ich dir definitiv nicht helfen.
Grüße
Wie wäre es, wenn du deinen bisherigen Code und/oder ein konkretes Beispiel postest?
Denn so, wie du es jetzt beschrieben hast, kann ich dir definitiv nicht helfen.
Grüße
Please use [code][/code] when posting code!
Keyboard: Logitech G PRO - Mouse: Logitech G502 LS - OS: Windows 10 Pro 64 Bit - AHK version: 1.1.33.09
Keyboard: Logitech G PRO - Mouse: Logitech G502 LS - OS: Windows 10 Pro 64 Bit - AHK version: 1.1.33.09
Re: Daten aus passwortgeschützte Seite herunterladen
Der code ist in seinem post beschrieben:
Wobei url und file durch die echte url und Dateinamen ersetzt werden.
UrlDownloadToFile verwendet nicht deine vollständigen Daten vom Internet Explorer. Ich kann mir vorstellen, dass Anmeldedaten dazu gehören.
In diesem Fall müsstest du ein InternetExplorer COMObject verwenden um InternetExplorer zu automatisieren - eventuell reicht es wenn du direkt die Seite besuchst, da du ja da eingeloggt bist.
Andernfalls musst du den IE so steuern, dass du dich einloggst.
Code: Select all
UrlDownloadToFile, someUrl, someFile
UrlDownloadToFile verwendet nicht deine vollständigen Daten vom Internet Explorer. Ich kann mir vorstellen, dass Anmeldedaten dazu gehören.
In diesem Fall müsstest du ein InternetExplorer COMObject verwenden um InternetExplorer zu automatisieren - eventuell reicht es wenn du direkt die Seite besuchst, da du ja da eingeloggt bist.
Andernfalls musst du den IE so steuern, dass du dich einloggst.
Recommends AHK Studio
Re: Daten aus passwortgeschützte Seite herunterladen
Ich hab in diesem Zusammenhang, sich einmal einloggen (+ merken) und dann den Browser automatisieren, zuletzt gute Ergebnisse mit der Bibliothek Chrome.ahk erzielt (du musst darauf achten, wieder das gleiche Chrome-Profil zu verwenden, wie beim Einloggen).
Ob das mit jeder Seite (oder den meisten) funktioniert oder ich bislang nur Glück hatte, bliebe auszuprobieren...
Ob das mit jeder Seite (oder den meisten) funktioniert oder ich bislang nur Glück hatte, bliebe auszuprobieren...
Re: Daten aus passwortgeschützte Seite herunterladen
Danke für eure Antworten,
mit Chrome.ahk funktioniert es, an die entsprechende Seite wird navigiert, ohne Passwort abfrage.
Wenn ich es versuche an den Quellcode der Seite zu kommen, bekomme folgende Meldung:
Specifically: {"code":-32000,"message":"Agent is not enabled."}
Hat irgendjemand eine Idee, wie ich den Quellcode einer Seite in einer Variable speichern kann ?
schöne Grüße
mit Chrome.ahk funktioniert es, an die entsprechende Seite wird navigiert, ohne Passwort abfrage.
Wenn ich es versuche an den Quellcode der Seite zu kommen, bekomme folgende Meldung:
Specifically: {"code":-32000,"message":"Agent is not enabled."}
Code: Select all
kuelle := PageInstance.Call("Page.getResourceContent", {"frameId": "A8916E61EC0944275FE038BAAA55EFFB", "url": "https://www.autohotkey.com/"}).content
msgbox, % kuelle
schöne Grüße
Re: Daten aus passwortgeschützte Seite herunterladen
Normalerweise müsste die Seite mit
gehen. Ich weiß aber nicht, wie das mit Frames ist... und ich kanns zur Zeit nicht testen.
Die Chrome Doku von Google ist selbst etwas spärlich, aber der Fehler mit dem nicht aktivierten Agent deutet darauf hin, dass du was aktivieren musst. Vielleicht
Oder was ähnliches... (aber die beiden gibt es jedenfalls) Ich probier später (morgen) auch mal, falls du nicht weiterkommst.
Code: Select all
html := PageInstance.Evaluate("document.getElementsByTagName('html')[0].outerHTML;").Value
Die Chrome Doku von Google ist selbst etwas spärlich, aber der Fehler mit dem nicht aktivierten Agent deutet darauf hin, dass du was aktivieren musst. Vielleicht
Code: Select all
PageInstance.Call("DOM.enable")
; oder
PageInstance.Call("Page.enable")
Re: Daten aus passwortgeschützte Seite herunterladen
Danke, @gregster
Dein Code funktioniert, bei eine Seite wie https://www.autohotkey.com/ Wunderbar.
Bei meiner Seite leider nicht.
schöne Grüße
Dein Code funktioniert, bei eine Seite wie https://www.autohotkey.com/ Wunderbar.
Bei meiner Seite leider nicht.
Code: Select all
html := PageInstance.Evaluate("document.getElementsByTagName('html')[0].outerHTML;").Value
msgbox, %html%
FileAppend, %html%, kuelle.txt
Re: Daten aus passwortgeschützte Seite herunterladen
Dann wird's womöglich knifflig. Ich arbeite mich derzeit (ganz langsam) durch die Dokumentation und probiere viel rum (und versuche, mir ein paar Hilfsfunktionen zu basteln), aber ich lese in der Regel gezielt einzelne Werte aus. Dabei habe ich mir über Frames bislang wenig Gedanken gemacht (aber die scheinen grundsätzlich knifflig zu sein) - denn bislang konnte ich alles auslesen, was ich brauchte (den kompletten HTML-Code der Seite hab ich höchstens mal zu Testzwecken runtergeladen).
Mittelfristig plane ich ein paar systematische Tests mit verschiedenen Seiten. Ich nehme an, die Website, die du automatisieren willst, ist nicht öffentlich zugänglich? Tests am eigentlichen Objekt des Interesses sind doch immer am effektivsten... oder hat die Seite zufällig eine API-Schnittstelle? Nicht dass deren Nutzung immer einfacher wäre, aber manchmal schon.
Mittelfristig plane ich ein paar systematische Tests mit verschiedenen Seiten. Ich nehme an, die Website, die du automatisieren willst, ist nicht öffentlich zugänglich? Tests am eigentlichen Objekt des Interesses sind doch immer am effektivsten... oder hat die Seite zufällig eine API-Schnittstelle? Nicht dass deren Nutzung immer einfacher wäre, aber manchmal schon.
Re: Daten aus passwortgeschützte Seite herunterladen Topic is solved
@songoku: So, hatte nun schließlich Zeit, mir die Frames mal genauer anzuschauen und habe das Beispiel autohotkey.com aufgegriffen, mit dem du oben Probleme hattest. Ich konnte das "Agent is not enabled"-Problem tatsächlich durch PageInst.Call("Page.enable") lösen.gregster wrote: ↑28 Feb 2019, 14:37[...] der Fehler mit dem nicht aktivierten Agent deutet darauf hin, dass du was aktivieren musst. VielleichtCode: Select all
PageInstance.Call("DOM.enable") ; oder PageInstance.Call("Page.enable")
Autohotkey.com hat ja selbst den eigentlichen Hauptframe und nur einen einzigen Childframe - letzterer ist die Slideshow mit den Codebeispielen (https://www.autohotkey.com/codeexamples.html) bei A peek at the syntax...
(ObjTree.ahk ist eine Bibliothek von HotKeyIt, die man nutzen kann, um sich einen Überblick über die Struktur und Inhalte eines Objekts zu machen - hier nicht notwendig, aber nützlich Die AHK-v1-Version wird nicht mehr gewartet, funktioniert aber noch)
Zum Code (ich gehe hier davon aus, dass du Chrome schon auf autohotkey.com gelotst hast) - der Quellcode des Childframes wird in der finalen msgbox ausgegeben...
Code: Select all
Space::
PageInst.Call("Page.enable") ; "Agent" aktivieren
fTree := PageInst.Call("Page.getFrameTree") ; die ID's ändern sich bei jedem Neustart
;objtree(fTree)
; Hauptframe:
id := fTree.frameTree.frame.id
url := fTree.frameTree.frame.url
msgbox % "Hauptframe - id : " id "`nurl : " url
; Childframe:
id1 := fTree.frameTree.childframes[1].frame.id
url1 := fTree.frameTree.childframes[1].frame.url
msgbox % "Childframe - id1 : " id1 "`nurl1 : " url1
res := PageInst.Call("Page.getResourceContent", {"frameId": id1 , "url": url1})
;objtree(res)
msgbox, % "content:`n" res.content
return
Ps.: Da Page.getFrameTree auch die URLs der Frames liefert, könnte man theoretisch auch zum jeweiligen Frame navigieren und dann die andere Methode von weiter oben verwenden... aber wäre natürlich aufwendiger und wahrscheinlich langsamer
Re: Daten aus passwortgeschützte Seite herunterladen
@gregster vielen Dank für deine Mühe.
Bekomme es leider nicht hin, entweder stelle ich mich extrem Dumm an oder habe etwas Entscheidendes nicht verstanden.
Bekomme es leider nicht hin, entweder stelle ich mich extrem Dumm an oder habe etwas Entscheidendes nicht verstanden.
Code: Select all
#Include Chrome.ahk
FileCreateDir, ChromeProfile
ChromeInst := new Chrome("ChromeProfile")
PageInstance := ChromeInst.GetPage()
PageInstance.Call("Page.navigate", {"url": "https://www.autohotkey.com/"})
PageInstance.WaitForLoad()
PageInst.Call("Page.enable") ; "Agent" aktivieren
fTree := PageInst.Call("Page.getFrameTree") ; die ID's ändern sich bei jedem Neustart
;objtree(fTree)
; Hauptframe:
id := fTree.frameTree.frame.id
url := fTree.frameTree.frame.url
msgbox % "Hauptframe - id : " id "`nurl : " url
; Childframe:
id1 := fTree.frameTree.childframes[1].frame.id
url1 := fTree.frameTree.childframes[1].frame.url
msgbox % "Childframe - id1 : " id1 "`nurl1 : " url1
res := PageInst.Call("Page.getResourceContent", {"frameId": id1 , "url": url1})
;objtree(res)
msgbox, % "content:`n" res.content
return
PageInstance.Disconnect()
ExitApp
Re: Daten aus passwortgeschützte Seite herunterladen
Vorsicht, du verwendest PageInstance, ich PageInst... beide hast du jetzt gemischt.
(ist mir auch schon passiert - leider scheitert das Ganze dann ohne erkennbare Fehlermeldung)
(ist mir auch schon passiert - leider scheitert das Ganze dann ohne erkennbare Fehlermeldung)
Re: Daten aus passwortgeschützte Seite herunterladen
Genial, funktioniert wunderbar.
Nochmal vielen Dank.
Nochmal vielen Dank.
Who is online
Users browsing this forum: No registered users and 96 guests