arianes
Goto Top

Einloggen auf Webseite mit PowerShell

Hallo,

ich möchte mit einem PowerShell-Script eine Seite öffnen, mich einloggen, eine Abfrage erstellen und dann eine Datei runterladen.
Da das täglich automatisert geschehen soll, wollte ich das mit PowerShell machen, scheiter aber schon am Einloggen.
Das Aufrufen der Seite funktioniert soweit.

Kann mir jemand helfen, wie ich auf den "Anmelden"-Button klicken kann?

Anbei 2 Bilder, die meinen bisherigen Versuch zeigen. Wieso geht "getElementByID" hier nicht? Ich habe es auch mit "getElementByName" probiert, aber es kommt die gleiche Fehlermeldung...

LG Ari
1
2

Content-Key: 7441922241

Url: https://administrator.de/contentid/7441922241

Printed on: June 16, 2024 at 21:06 o'clock

Mitglied: 6376382705
6376382705 Jun 06, 2023 updated at 19:50:53 (UTC)
Goto Top
Hi.

Keine Ahnung ob das Powershell so direkt kann. Mit Selenium (Chrome) fahren aber die meisten ziemlich gut.

Gruß
Member: Dani
Dani Jun 06, 2023 at 19:55:07 (UTC)
Goto Top
Moin,
ich möchte mit einem PowerShell-Script eine Seite öffnen, mich einloggen, eine Abfrage erstellen und dann eine Datei runterladen.
Ich würde auf Selenium in Verbindung mit Google Chrome und Google Chrome Driver setzen. Es gibt für Selenium auch ein passendes PowerShell Modul. Der Internet Explorer ist eigentlich tot und die meisten Internetseiten werden damit teilweise oder gar nicht mehr geladen.

Kann mir jemand helfen, wie ich auf den "Anmelden"-Button klicken kann?
Du musst natürlich sicherstellen, dass der Befehl erst ausgeführt wird, wenn die Seite vollständig geladen ist.


Gruß,
Dani
Member: Crusher79
Crusher79 Jun 07, 2023 updated at 08:19:56 (UTC)
Goto Top
Hallo,

Grundlagen - HTTPS - ggf. auch als Hilfestellung, wenn man keine gültigen Zertifikate aber HTTPS hat:

add-type @"  
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@  
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

Events auslösen muss man nicht zwingend! Es reicht mit Firefox + F12 (Dev Tools) Netzwerkanalyse GET und POST mit zu schreiben! Hier geht es sogar soweit, dass man auch versteckte Secrets auf den Seiten auslesen und später mit verwendne kann.

Nötig bei: Unify Telefon wie CP200 und CP400 sowie z.B. Ricoh Druckern.


Ich kenne Deine Seite nicht! Darum hier nur ein Planspiel. Wir setzen auf Ricoh Drucker Papeir Format und meldne uns zuvor mit dem Secret an.

ACHTUNG: Ein paar Sachen aren zum Spielen. Code ist nicht 100% schön. Selbst wenn du kein Hidden Field mit ID hast, so wäre dies eine Stelle die dir zeigt, wie man Forms ausliest!

$GetPaperSize = Invoke-WebRequest $GetPaperUrl -WebSession $session 
$pageToken = $GetPaperSize.Forms['form1'].Fields   
$setPageToken = $pageToken['wimToken']  


Der ganze Aufruft wurde einfach aus Firefox kopiert!

ACHTUNG: Die Bilder zeigen die Tageszeitung und hier einen POST. Du kannst das 1:1 umsetzten. Als unformatierter String wird dies quasi zum Payload für deinen Request!

So kann man Login-String oder alles andere nacbauen!


07-06-_2023_10-15-39


RICOH SP C361SFNw - Eintellungen -> Papier
Neu setzen der Fach und ByPass Einstellungen

$IP = "192.168.200.50"  

$GetLoginUrl = "http://$IP/web/guest/de/websys/webArch/authForm.cgi"  
$PostLoginUrl = "http://$IP/web/guest/de/websys/webArch/login.cgi"  
$GetPaperUrl = "http://$IP/web/entry/de/websys/config/getPaperConfig.cgi"  
$SetPaperUrl = "http://$IP/web/entry/de/websys/config/setPaperConfig.cgi"  

$loginSite = Invoke-WebRequest -Uri $GetLoginUrl -SessionVariable session

$ergebnis = Invoke-WebRequest $GetLoginUrl -Method Post -Body "wimToken=--&userid_work=&userid=YWRtaW4=&password_work=&password=c3lzdGVtQHJkZQ==&open=" -WebSession $session   
$token = $ergebnis.Forms['form1'].Fields.Values  
$token[0]

$Body = "wimToken=$($token[0])&userid_work=&userid=YWRtaW4%3D&password_work=&password=<hier da_verschluesseltes_pw>&open="   

$ergebnis = Invoke-WebRequest $PostLoginUrl -Method Post -Body $Body -WebSession $session

$GetPaperSize = Invoke-WebRequest $GetPaperUrl -WebSession $session 
$pageToken = $GetPaperSize.Forms['form1'].Fields   
$setPageToken = $pageToken['wimToken']  

$setPageToken

$DataPapersize = "wimToken=$setPageToken&accessConf=MDowOjA6MDoxOjE6MTowOjMyODAwOjA6MDowOg==&userPaperRef=0&aszInputTraySetting=&confirmExec=&aiUserPaperRef=0&aiTrayId=2&local_aszPaperSize=PSIZE_8Hx13T&aszPaperSize=PSIZE_8Hx13T&local_aszFreeSizeL=202.0&local_aszFreeSizeW=149.0&aszFreeSizeUnit=UNIT_MILLI&aszFreeSizeL=202.0&aszFreeSizeW=149.0&local_aszPaperType=TRY_KIND_NORMAL&aszPaperType=TRY_KIND_NORMAL&aszPaperCustomType=&local_aszPaperCustomType=&local_aszPaperThick=TRY_THICK_NORMAL2&aszPaperThick=TRY_THICK_NORMAL2&local_abIsAutoTraySelection=true&abIsAutoTraySelection=true&local_aszDuplexPrintType=true&aszDuplexPrintType=true&thickInfo=&userPaperRef=0&aszInputTraySetting=&confirmExec=&aiUserPaperRef=0&aiTrayId=1&local_aszPaperSize=PSIZE_A5T&aszPaperSize=PSIZE_A5T&local_aszFreeSizeL=202.0&local_aszFreeSizeW=149.0&aszFreeSizeUnit=UNIT_MILLI&aszFreeSizeL=202.0&aszFreeSizeW=149.0&local_aszPaperType=TRY_KIND_LABELS&aszPaperType=TRY_KIND_LABELS&aszPaperCustomType=&local_aszPaperCustomType=&local_aszPaperThick=TRY_THICK_NORMAL2&aszPaperThick=TRY_THICK_NORMAL2&local_abIsAutoTraySelection=true&abIsAutoTraySelection=true&local_aszDuplexPrintType=false&aszDuplexPrintType=false&thickInfo=&machineName=&lctType=0&isSuperiorConnect=false&isDomDestination=false"  
$SetPaperSize = Invoke-WebRequest $SetPaperUrl -Method Post -Body $DataPapersize -WebSession $session

$SetPaperSize