mrlabel
Goto Top

Webseite auto login

Hallo,

Ich habe jetzt versucht mit SciTE ein Script zu schreiben mit dem Autologin. Funktioniert an sich auch.
Jetzt habe ich nur ein Problem.. ich mache das momentan mit Internet Explorer. Der zeigt mir jedoch beim aufrufen der Seite,
dass die Seite nicht vertrauenswürdig ist. D.h. ich muss erst noch das Risiko akzeptieren. Wenn ich die Seite im Firefox aufrufe geht es direkt.
Ich habe versucht das Zertifikat bei Vertrauenswürdigen Zertifikaten zu installieren - bringt aber nichts. Jetzt würde ich das gerne in Firefox machen - weiß jemand wie ich den code dann umschreiben muss?

btw. kann mir jemand sagen was das für eine Script Sprache ist ...haha :D

#include <IE.au3>

Call ("signIn")  


Func signIn ()
	Global $oIE = _IECreate ("*WEBSEITENNAME.com*)  

	Local $username = _IEGetObjByName ($oIE, "login")  
	Local $password = _IEGetObjByName ($oIE, "passw")  
	Local $button = _IEGetObjByName ($oIE, "butt")  

	_IEFormElementSetValue ($username, "eingabe username")  
	_IEFormElementSetValue ($password, "eingabe passwort")  

	_IEAction ($button, "click")  

	EndFunc

Content-ID: 584509

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

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

emeriks
emeriks 03.07.2020 aktualisiert um 11:24:03 Uhr
Goto Top
Hi,
Du solltest das Problem mit dem Zertifikat lösen, anstatt auf einen anderen Browser auszuweichen.

Warum meckert der IE denn das Zertifikat an?
Ist es abgelaufen?
Stimmt der FQDN oder die IP-Adresse nicht überein?
Oder wird der ausstellenden CA nicht vertraut?
Ist es gar ein selbstzertifiziertes?

E.
MrLabel
MrLabel 03.07.2020 um 11:26:15 Uhr
Goto Top
IP und FQDN stimmen überein..
Es ist selbst zertifiziert denke ich. Ist von unserer Monitoring Solution
( bin gerade allein in der Firma und weiss nicht wie ich das Problem mit dem Zertifikat lösen kann)
MrLabel
MrLabel 03.07.2020 um 11:27:06 Uhr
Goto Top
ps.. welche Scriptsprache wird da benutzt? Damit ich Lösungen selbst dazu googlen kann :D
Ist das VBS?
emeriks
emeriks 03.07.2020 um 11:42:28 Uhr
Goto Top
Zitat von @MrLabel:
Es ist selbst zertifiziert denke ich. Ist von unserer Monitoring Solution
Dann versuche mal, das unter "vertrauenswürdige Stammzertifizierungsstellen" abzulegen.
emeriks
emeriks 03.07.2020 um 11:43:48 Uhr
Goto Top
Zitat von @MrLabel:
ps.. welche Scriptsprache wird da benutzt?
Wo?

Damit ich Lösungen selbst dazu googlen kann :D
Ist das VBS?
Da gibt es für alle gängigen Script- und Compilersprachen im Web was zu finden.
MrLabel
MrLabel 03.07.2020 um 11:44:00 Uhr
Goto Top
Habe ich schon ... funktioniert dennoch nicht.
MrLabel
MrLabel 03.07.2020 um 11:46:29 Uhr
Goto Top
habe bei einem Code identifier rausgefunden dass es php ist
144705
144705 03.07.2020 aktualisiert um 14:21:30 Uhr
Goto Top
Zitat von @MrLabel:

habe bei einem Code identifier rausgefunden dass es php ist
Nein, das ist AutoIT ! Schon bedenklich wenn man das noch nicht mal weiß obwohl man damit programmiert bzw. Bei dir eher copy n pasted.

Für den Firefox gibt es nativ keine Automatisierungs API.
Da musst du dann entweder zu SeleniumHQ oder den diversen Drittanbieter Automatisierungs APIs greifen.
https://www.hosteurope.de/blog/browser-automation/
144705
144705 03.07.2020 um 14:19:26 Uhr
Goto Top
Zitat von @MrLabel:

Habe ich schon ... funktioniert dennoch nicht.
Dann hast du es nicht im Computer- sondern in User-Store abgelegt.
colinardo
colinardo 04.07.2020 aktualisiert um 12:35:57 Uhr
Goto Top
Servus,
hier mal ein Beispiel mit Selenium und Firefox für den Administrator.de Login.
Der IE ist ja mittlerweile nicht mehr zeitgemäß.

Benutzername und Password sind in Zeilen 1 und 2 einzutragen.

Der hiesige Code loggt sich hier ein, navigiert zu der Fragen-Seite, pausiert zur Demo 2 Sekunden, loggt sich dann wieder aus und schließt die Firefox-Session.
Das Skript ist deshalb etwas länger da eine Funktion zum automatischen Download des Selenium Webdrivers und der Gecko-Engine EXE aus den Nuget Repos enthalten ist, so das jeder es ohne sich die Libraries selbst besorgen zu müssen ausprobieren kann.
Es lädt die Assemblies (eine DLL und eine EXE) entweder ins gleiche Verzeichnis in der das Skript liegt, oder wenn es ohne zu speichern ausgeführt wird ins %TEMP% Verzeichnis herunter.

Die eigentlich essentiellen Codestellen beginne ab Zeile 47. Die Stellen die Benutzername, Passwortfeld und Login-Button referenzieren sind natürlich bei Verwendung mit anderen Seiten entsprechend anzupassen!
Wenn dafür Hilfe benötigt wird => PN
$USERNAME = 'USERNAME'  
$PASSWORD = 'PASSWORD'  
$WEBSITE = 'https://administrator.de/members/login.php'  

# functions loads required assemblies from nuget
function Load-NugetAssembly {
    [CmdletBinding()]
    param(
        [string]$url,
        [string]$name,
        [string]$zipinternalpath,
        [switch]$downloadonly
    )
    # Accept all TLS protocols
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::GetNames([System.Net.SecurityProtocolType]) 
    $localpath = @{$true=(join-path $psscriptroot $name);$false=(join-path $env:TEMP $name)}[($psscriptroot -ne '')]  
    $tmp = "$env:TEMP\$([IO.Path]::GetRandomFileName())"  
    try{
        if(!(Test-Path $localpath)){
            Add-Type -A System.IO.Compression.FileSystem
            write-host "Downloading and extracting required library '$name' ... " -F Green -NoNewline  
            (New-Object System.Net.WebClient).DownloadFile($url, $tmp)
            $zip = [System.IO.Compression.ZipFile]::OpenRead($tmp)
            $zip.Entries | ?{$_.Fullname -eq $zipinternalpath} | %{
                [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_,$localpath)
            }
            write-host "OK" -F Green  
        }
        if(!$downloadonly.IsPresent){
            Add-Type -Path $localpath -EA Stop
        }
        
    }catch{
        throw "Error: $($_.Exception.Message)"  
    }finally{
        if ($zip){$zip.Dispose()}
        if(Test-Path $tmp){del $tmp -Force}
    }  
}

# load required assemblies if not already loaded
if (!('OpenQA.Selenium.Firefox.FirefoxDriver' -as [Type])){  
        Load-NugetAssembly 'https://www.nuget.org/api/v2/package/Selenium.WebDriver' -name 'WebDriver.dll' -zipinternalpath 'lib/net40/WebDriver.dll' -EA Stop  
        Load-NugetAssembly 'https://www.nuget.org/api/v2/package/Selenium.WebDriver.GeckoDriver' -name 'geckodriver.exe' -zipinternalpath 'driver/win64/geckodriver.exe' -downloadonly -EA Stop  
}

# -----------
# create driver service
$dService = [OpenQA.Selenium.Firefox.FirefoxDriverService]::CreateDefaultService()
# hide command prompt window
$dService.HideCommandPromptWindow = $true
# create firefox driver object
$ff = New-Object OpenQA.Selenium.Firefox.FirefoxDriver $dService

# set position and window size
$ff.Manage().window.Size = [System.Drawing.Size]::new(1024,768)
$ff.Manage().window.position = [System.Drawing.Size]::new(0,0)

# set page url and navigate to logon page
$ff.Url = $WEBSITE
$ff.Navigate() | out-null
# find username-, password- and logon button fields
$user = $ff.FindElementById('global-login-field')  
$pass = $ff.FindElementById('global-login-pass')  
$btnlogin = $ff.FindElementByTagName('button')  
# enter information into fields
$user.SendKeys($USERNAME)
$pass.SendKeys($PASSWORD)
# invoke click function of logon button
$btnlogin.Click()

# navigate to questions page
$ff.Url = 'https://administrator.de/forum/'  
$ff.Navigate() | out-null

# sleep some time for demo purpose
sleep 2

# then logout from page
$ff.Url = 'https://administrator.de/members/logout.php?true'  
$ff.Navigate() | out-null

# and finally quit browser
$ff.Quit()

Viel Spaß damit
Grüße Uwe