Wie kann ich ein Bash-Skript programmieren, was sich in eine Webseite mit den richtigen Zugangsdaten einloggt?

1 Antwort

ob das mit openID funktioniert weis ich nicht, sollte aber grundsätzlich so funktionieren

Habe mal erstmal den Ansatz genommen das du die Homepage selber eingeben musst.
Der Bereich Konfiguration muss von dir entsprechend angepasst werden.

#!/bin/bash


# Konfiguration
CLIENT_ID="dein_client_id"
CLIENT_SECRET="dein_client_secret"
AUTHORIZATION_SERVER="https://dein-authorization-server"
REDIRECT_URI="https://deine-redirect-uri"
SCOPE="openid profile"
TOKEN_URL="$AUTHORIZATION_SERVER/realms/prod-leg/protocol/openid-connect/token"


# Schritt 1: Den Benutzer zur Anmeldeseite weiterleiten (manuell)
echo "Bitte gehen Sie zu folgender URL, um sich anzumelden:"
echo "$AUTHORIZATION_SERVER/realms/prod-leg/protocol/openid-connect/auth?client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&response_type=code&scope=$SCOPE"


# Schritt 2: Manuelle Eingabe des Authorization Codes nach der Anmeldung
echo "Geben Sie den erhaltenen Authorization Code ein:"
read AUTH_CODE


# Schritt 3: Token anfordern
RESPONSE=$(curl -X POST "$TOKEN_URL" \
  -d "client_id=$CLIENT_ID" \
  -d "client_secret=$CLIENT_SECRET" \
  -d "code=$AUTH_CODE" \
  -d "redirect_uri=$REDIRECT_URI" \
  -d "grant_type=authorization_code")


# Extrahieren des Access Tokens
ACCESS_TOKEN=$(echo "$RESPONSE" | jq -r '.access_token')


# Zeige das Access Token an
echo "Access Token: $ACCESS_TOKEN"


# Optional: Verwende das Access Token für eine API-Anfrage
API_URL="https://api.deinservice.com/endpoint"
curl -H "Authorization: Bearer $ACCESS_TOKEN" "$API_URL"



xMatheisenx 
Beitragsersteller
 17.01.2025, 06:56

genau dieser konfigurations part da weiß ich nicht was ich eingeben muss ist es einfach nur copy passt aus dem browser?

anTTraXX  17.01.2025, 07:04
@xMatheisenx
CLIENT_ID="dein_client_id"
CLIENT_SECRET="dein_client_secret"

Diese beiden Werte erhältst du, wenn du eine Anwendung (Client) bei dem Authorization Server registrierst, den du verwenden möchtest.

AUTHORIZATION_SERVER="https://dein-authorization-server"

Dies ist die URL des Authorization Servers, der den OpenID/OAuth 2.0-Flow unterstützt. Die URL hängt davon ab, welchen Identity Provider du verwendest.

REDIRECT_URI="https://deine-redirect-uri"

Die Redirect URI ist die URL, an die der Authorization Server den Benutzer nach erfolgreicher Authentifizierung und Autorisierung weiterleitet. 

SCOPE="openid profile"

Der Scope gibt an, welche Berechtigungen du von der API anforderst. 

TOKEN_URL="$AUTHORIZATION_SERVER/realms/prod-leg/protocol/openid-connect/token"

Die URL für den Token-Endpunkt ist in der Regel eine feste URL des Authorization Servers. 

anTTraXX  17.01.2025, 07:39
@xMatheisenx

Dann scheiterst du bereits an den Basics und ich weis nicht ob die Pläne mit dem Skript bereits das richtige sind

xMatheisenx 
Beitragsersteller
 17.01.2025, 07:40
@anTTraXX

wie gesagt ich hab keine möglichkeit an den client secret zu gelangen weil ich nicht der besitzer/admin dieser webseite bin

xMatheisenx 
Beitragsersteller
 17.01.2025, 07:47
@anTTraXX

mein ziel ist es pdfs ab zu fangen und jedes mal wenn eine neue in meinem mieterportal rein kommt, würde die automatisch in meine nextcloud geladen und da hatte ich die idee ein bash zu programmieren was sich mit meinen persönlichen zugangsdaten in die website einloggt und dann in den dokumenten ordner switched und dann alle pdfs prüft und die neuen dann einmal runterlädt und in meine extcloud verschiebt und dazu noch n cron job der das im hintergrund zB alle 6h ausführt

anTTraXX  17.01.2025, 07:48
@xMatheisenx

Achsooo
ich schaue mal ob ich mir da was aus den Fingern saugen kann.

Das sollte mit curl gehen

anTTraXX  17.01.2025, 08:15
@anTTraXX
#!/bin/bash


# Konfiguration
MIETERPORTAL_URL="https://dein-mieterportal.de"
LOGIN_URL="$MIETERPORTAL_URL/login"
DOCUMENTS_URL="$MIETERPORTAL_URL/dokumente"
NEXTCLOUD_URL="https://deine-nextcloud.de/remote.php/webdav/"
NEXTCLOUD_USER="dein_nextcloud_user"
NEXTCLOUD_PASS="dein_nextcloud_pass"
USERNAME="dein_username"
PASSWORD="dein_passwort"
COOKIE_FILE="cookies.txt"


# Login in das Mieterportal
curl -c $COOKIE_FILE -d "username=$USERNAME&password=$PASSWORD" $LOGIN_URL


# PDF Links auf der Dokumentenseite abrufen
curl -b $COOKIE_FILE $DOCUMENTS_URL -o documents_page.html
grep -oP 'href="\K[^"]+\.pdf' documents_page.html > pdf_links.txt


# PDFs herunterladen
while read pdf_link; do
    FULL_PDF_URL="$MIETERPORTAL_URL/$pdf_link"
    curl -b $COOKIE_FILE -O $FULL_PDF_URL
done < pdf_links.txt


# PDFs nach Nextcloud hochladen
for pdf_file in *.pdf; do
    curl -u $NEXTCLOUD_USER:$NEXTCLOUD_PASS -T "$pdf_file" "$NEXTCLOUD_URL$pdf_file"
done


# Aufräumen: Temporäre Dateien löschen
rm -f documents_page.html pdf_links.txt

Die Links musst du entsprechend anpassen

xMatheisenx 
Beitragsersteller
 17.01.2025, 08:42
@anTTraXX

das ist ja das problem dass link/login nicht klappt