Last active
September 19, 2024 13:07
-
-
Save madex/fafbed3b2fa2d8bf4594a85c046b8222 to your computer and use it in GitHub Desktop.
Script um einfach in der Kommandozeile abzufragen op dein Peso / Reisepass da ist ohne jedes mal das Formular auszufüllen. Für die Bürgerdienste der Stadt Dortmund 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import requests | |
| # import time | |
| from bs4 import BeautifulSoup | |
| # URL der Formularseite | |
| url = "https://rathaus.dortmund.de/antragsstatusausweis/?kunde=05913000" | |
| # Zuerst die Seite laden, um den aktuellen ViewState und JSESSIONID zu erhalten | |
| def get_view_state_and_action(): | |
| response = requests.get(url) | |
| soup = BeautifulSoup(response.text, 'html.parser') | |
| # Extrahiere den aktuellen ViewState | |
| view_state = soup.find('input', {'name': 'javax.faces.ViewState'})['value'] | |
| # Extrahiere die JSESSIONID aus dem form-Tag's action-Attribut | |
| form_tag = soup.find('form', {'id': 'antragsForm'}) | |
| action = form_tag['action'] | |
| return view_state, str(action) | |
| # Funktion, um den Status des Personalausweises abzufragen | |
| def check_pass_status(seriennummer, geburtsdatum, ausweis_typ): | |
| view_state, action = get_view_state_and_action() | |
| # print(view_state, action) | |
| # time.sleep(2.3) | |
| # Daten für die POST-Anfrage | |
| data = { | |
| 'antragsForm': 'antragsForm', | |
| 'antragsForm:passauswahl': ausweis_typ, | |
| 'antragsForm:seriennummer': seriennummer, | |
| 'antragsForm:geburtsdatum': geburtsdatum, | |
| 'javax.faces.ViewState': view_state, | |
| 'antragsForm:j_id18': 'Antragsstatus ermitteln' | |
| } | |
| # POST-Anfrage-URL mit JSESSIONID | |
| post_url = f"https://rathaus.dortmund.de{action}" | |
| # Anfrage mit korrekter JSESSIONID senden | |
| response = requests.post(post_url, data=data) | |
| # Die Antwort weiterverarbeiten (abhängig von der Struktur der Antwortseite) | |
| soup = BeautifulSoup(response.text, 'html.parser') | |
| # Den Status des Antrags aus dem HTML extrahieren | |
| status = soup.find('div', {'id': 'statusAnzeige'}) # Beispiel für die Status-Anzeige | |
| if status: | |
| return status.text +'\n'+ str(status.find('a')) | |
| else: | |
| return "Status konnte nicht abgerufen werden." | |
| # Beispielaufruf | |
| seriennummer = "xxxxxxxxxx" # Deine Seriennummer für den Personalausweis | |
| geburtsdatum = "tt.mm.jjjj" # Dein Geburtsdatum | |
| status = check_pass_status(seriennummer, geburtsdatum, 'R') # 'R' Reisepass, 'B' Personalausweis, 'UB' eID-Karte | |
| print(status) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment