none
IE per PowerShell steuern: DOM vs. HTML Source

    Allgemeine Diskussion

  • Hallo,
    ich möchte per PowerShell eine Webseite untersuchen, auf der ich mich zuvor anmelden muss. Dabei muss ich sowohl auf die Quell-HTML-Datei zugreifen als auch auf das DOM-Objekt, das der Browser aus der HTML-Datei generiert (z.B. durch Ausführung von JavaScript).
    Das Problem dabei ist, dass ich mit den dafür geeigneten Methoden nicht beides gleichzeitig erledigen kann.

    1. Methode:
    Ich erzeuge ein COM-Objekt und öffne damit eine Instanz des IE, mit dem ich die Webseite aufrufen kann.

    $ie = New-Object -ComObject "internetexplorer.application"
    $ie.Visible = $true
    $ie.Navigate("URL")

    Hiermit kann ich das DOM untersuchen.

    $ie.Document.body

    Ich finde hier aber keine Möglichkeit, die Quell-HTML-Datei zu untersuchen.

    2. Methode:
    Seit PowerShell 3.0 gibt es das cmdlet "Invoke-WebRequest". Damit kann ich eine Webseite herunterladen, erhalte hier aber die Quell-HTML-Datei.
    $HTML = Invoke-WebRequest -Uri "URL"
    $HTML.Content

    Ich finde hier keine Möglichkeit, das DOM zu untersuchen. Das Attribut "parsedHTML" enthält auch nur die Informationen der Quell-HTML-Datei.

    Die Webseite, die ich aufrufen möchte und auf der ich mich anmelden muss, offenbart mir die Anmeldemaske erst im DOM, d.h. ich kann mich mit Hilfe der zweiten Methode nicht an der Webseite anmelden. Mit der ersten Methode lässt sich das realisieren. Dann kann ich auf allen Unterseiten das DOM untersuchen. Nun dachte ich, dass ich ja, nachdem ich per COM-Objekt Zugriff auf das Web-Angebot habe, mit "Invoke-WebRequest" auch die Quell-HTML-Dateien herunterladen könnte. Leider verwendet die PowerShell bei "Invoke-WebRequest" nicht den Cookie-/Session-Speicher der IE-Instanz, die ich zuvor geöffnet habe. Ergo hat "Invoke-WebRequest" keinen Zugriff auf die Unterseiten.

    Mein Problem könnte dadurch gelöst werden, dass mir jemand eine Möglichkeit aufzeigt, wie ich bei einer der beiden Methoden sowohl die Quell-HTML-Datei als auch das DOM untersuchen kann. ODER ist es möglich, die Session der IE-Instanz zu exportieren und an Invoke-WebRequest per Parameter "-WebSession" zu übergeben?

    Viele Grüße,
    Thomas

    PS: Der IE hat offensichtlich jederzeit Zugriff sowohl auf das DOM als auch auf die Quell-HTML-Datei. Unter "F 12 Entwicklertools" findet man unter "DOM Explorer" das DOM und unter "Debugger -> Content" die Quell-HTML-Datei. Nur wie kann ich per PowerShell gleichzeitig auf beides zugreifen?
    Sonntag, 14. Februar 2016 19:26

Alle Antworten

  • $ie.Document.body

    Ich finde hier aber keine Möglichkeit, die Quell-HTML-Datei zu untersuchen.

    An's HTML kommst Du mit

    Write-Host $ie.Document.body.innerHTML


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 15. Februar 2016 08:48
  • An's HTML kommst Du mit

    Write-Host $ie.Document.body.innerHTML


    Olaf Helper


    Ja, das wollte ich mit ".Body" bereits andeuten. Dabei handelt es sich aber nicht um den Quell-HTML-Code, sondern um das DOM, das durch den Browser durch Interpretation der Quell-HTML-Datei und nach Ausführung von z.B. JavaScript erzeugt wurde.
    Montag, 15. Februar 2016 19:16
  • Hallo Thomas1100101,

    bist Du weitergekommen?

    Gruß

    Aleksander


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht,  kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 1. März 2016 11:31
  • Hallo Aleksander,

    leider habe ich noch keine Lösung für das Problem gefunden :-/

    Gruß,

    Thomas

    Sonntag, 6. März 2016 12:00