Skip to content

Instantly share code, notes, and snippets.

@madex
Last active September 19, 2024 13:07
Show Gist options
  • Select an option

  • Save madex/fafbed3b2fa2d8bf4594a85c046b8222 to your computer and use it in GitHub Desktop.

Select an option

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
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