Direkter Zugriff auf Ergebnisseite des php-Formulars möglich?
Hallo Freunde,
ich würde gern die Abfuhrtermine unseres hiesigen Anbieters automatisiert abrufen. Es gibt auf deren Homepage ein Formular, das auch bei Klick auf Ort und Straße die Termine ausspuckt. Ich weiß aus dem Quelltext, welche Variablen mit welchen Werten übergeben werden. Es reicht aber anscheinend nicht, diese Variablen mit der URL zu übertragen um auf die Ergebnisseite zu kommen, es bleibt bei der Anzeige der Formularseite. Hat vielleicht jemand eine Idee, wie ich das Formular "austricksen" kann?
Es handelt sich um dieses Formular: https://www.zaw-online.de/wastel/api/calendar.php (Klick auf "Individueller Kalender")
Vielen Dank!!
Gruß, Tim
ich würde gern die Abfuhrtermine unseres hiesigen Anbieters automatisiert abrufen. Es gibt auf deren Homepage ein Formular, das auch bei Klick auf Ort und Straße die Termine ausspuckt. Ich weiß aus dem Quelltext, welche Variablen mit welchen Werten übergeben werden. Es reicht aber anscheinend nicht, diese Variablen mit der URL zu übertragen um auf die Ergebnisseite zu kommen, es bleibt bei der Anzeige der Formularseite. Hat vielleicht jemand eine Idee, wie ich das Formular "austricksen" kann?
Es handelt sich um dieses Formular: https://www.zaw-online.de/wastel/api/calendar.php (Klick auf "Individueller Kalender")
Vielen Dank!!
Gruß, Tim
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 608289
Url: https://administrator.de/forum/direkter-zugriff-auf-ergebnisseite-des-php-formulars-moeglich-608289.html
Ausgedruckt am: 18.04.2025 um 03:04 Uhr
13 Kommentare
Neuester Kommentar
Hallo Tim,
parse doch einfach die KalenderUrl.
e.g https://www.zaw-online.de/wastel/api/ical.php?&ticket=c3RyZWV0SUQ9OD ...
da holst du dann die Daten raus und gut ist.
Grüße, Schönen Sonntag,
Christian
parse doch einfach die KalenderUrl.
e.g https://www.zaw-online.de/wastel/api/ical.php?&ticket=c3RyZWV0SUQ9OD ...
da holst du dann die Daten raus und gut ist.
Grüße, Schönen Sonntag,
Christian
Nun - wenn die auch nur ETWAS Ahnung haben beim Erstellen der Seite würde man ja auf der ersten Seite eben nich nur deine 2-3 Felderchen erstellen sondern auch ne Session starten. Auf der Ergebnisseite prüft man halt dann nur nach ob die Session gestartet wurde - wenn nicht gibts halt auch ne Abfuhr... (das wäre jetzt noch nich mal so die richtige "Schutzfunktion", aber so als unterstes Minimum...). Damit kannst du natürlich nich einfach zur Ergebnisseite gehen ohne ne gültige Session zu besitzen...

Ich würde auch die ICAL Files parsen, wenn du aber unbedingt die HTML Seite haben willst, bitte
Powershell Code
Hab dir die Tabelle schon passend geparst und in ein Object verwandelt.
Ausgabe des Objekts dann ähnlich wie
Filter-String für filterFormData einfach mit F12 in den Developer Tools rausfischen
Powershell Code
1
2
3
4
5
6
2
3
4
5
6
[System.Net.ServicePointManager]::SecurityProtocol = 'Tls','Tls11','Tls12'
$page = iwr 'https://www.zaw-online.de/wastel/api/calendar.php' -SessionVariable session
$result = iwr "https://www.zaw-online.de/wastel/api/calendar.php?$([regex]::match($page.Content,'(?is)url\s*:\s*".*?(ticket=[^"]+)').Groups[1].Value)" -Method Post -ContentType 'application/x-www-form-urlencoded' -Body @{filterFormData = 'wastelOrt=MQ&wastelStreet=Nzc0MQ&dateStart=01.01.2020&dateEnd=31.12.2020&artid%5B%5D=Mw&artid%5B%5D=NA&artid%5B%5D=Mg&artid%5B%5D=MQ&artid%5B%5D=NQ&excludeweekly=1&alarmtime=-1'} -WebSession $session
$result.ParsedHtml.getElementById('termineTable').getElementsByTagName("tr") | %{
[pscustomobject]@{Datum = $_.children[1].innerText; Termin = $_.children[2].innerText; Hinweis = $_.children[3].innerText}
}
Ausgabe des Objekts dann ähnlich wie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Datum Termin Hinweis
----- ------ -------
07.01.2020 Biomüll -alle Größen-
10.01.2020 Restmüll Tonnen und Container 14-täglich
11.01.2020 Schadstoffmobil
20.01.2020 Papier Tonnen und Container
21.01.2020 Biomüll -alle Größen-
21.01.2020 Gelber Sack -alle Größen-
24.01.2020 Restmüll Tonnen und Container 14-täglich
04.02.2020 Biomüll -alle Größen-
07.02.2020 Restmüll Tonnen und Container 14-täglich
17.02.2020 Papier Tonnen und Container
18.02.2020 Biomüll -alle Größen-
18.02.2020 Gelber Sack -alle Größen-
21.02.2020 Restmüll Tonnen und Container 14-täglich
03.03.2020 Biomüll -alle Größen-
06.03.2020 Restmüll Tonnen und Container 14-täglich
07.03.2020 Schadstoffmobil
16.03.2020 Papier Tonnen und Container
Filter-String für filterFormData einfach mit F12 in den Developer Tools rausfischen

Äh nö, ist besser da sich das Format selbst nicht ändert, im Gegensatz zu HTML-Seiten und Tabellen etc.
wenn sich etwas ändert. Diese Lösung ist viel besser...
Wenn sich die HTML-Seite ändert funktioniert der Code oben eben auch nicht mehr, nur zur Info!
Zitat von @maretz:
mal ne blöde frage - aber wofür das ganze? Ich würde einfach den Kalender in meinen normalen Kalender importieren (hab ich z.B. auch gemacht) - und bekomme so ne errinnerung 1 tag vorher und morgens... würde mich daher einfach mal interessieren wofür der umweg über das ganze rumgeparse...
Versteh ich auch nicht, vielleicht will der das ganze ja woanders hin schreiben warum auch immer, k.A. weiß der Geier, sein Bier.mal ne blöde frage - aber wofür das ganze? Ich würde einfach den Kalender in meinen normalen Kalender importieren (hab ich z.B. auch gemacht) - und bekomme so ne errinnerung 1 tag vorher und morgens... würde mich daher einfach mal interessieren wofür der umweg über das ganze rumgeparse...

Zitat von @Esekyl:
Jetzt muss ich nur noch die PowerShell Commands für curl übersetzen, weil auf dem Screen Linux läuft. Ich weiß zwar im Groben, was deine iwr-Commands machen, bin aber mit curl nicht so vertraut.
Auch kein ThemaJetzt muss ich nur noch die PowerShell Commands für curl übersetzen, weil auf dem Screen Linux läuft. Ich weiß zwar im Groben, was deine iwr-Commands machen, bin aber mit curl nicht so vertraut.
1
2
3
4
2
3
4
#!/bin/bash
URL=$(curl -s 'https://www.zaw-online.de/wastel/api/calendar.php' | grep -Po '(?is)url : ".*?ticket=[^"]+' | cut -d '"' -f2 | head -n1)
DATA='filterFormData=wastelOrt=MQ&wastelStreet=Nzc0MQ&dateStart=01.01.2020&dateEnd=31.12.2020&artid%5B%5D=Mw&artid%5B%5D=NA&artid%5B%5D=Mg&artid%5B%5D=MQ&artid%5B%5D=NQ&excludeweekly=1&alarmtime=-1'
curl -s -X POST --data-urlencode "$DATA" -H "Content-Type: application/x-www-form-urlencoded" "$URL" | xmllint --html -xpath "//table[@id='termineTable']" -

Ja vermutlich ein "pseudo" Ticket, offensichtlich ändert sich das für die Abfrage über Ajax aber gar nicht, zumindest nicht seit gestern. Aber vielleicht in größeren Abständen, naja seis drum, das Skript liest sich die Ajax POST-URL aus dem JavaScript-Part der Seite aus.
Xmllint war mir gänzlich unbekannt, da wäre ich wohl dran gescheitert.
XMLlint ist eigentlich ein XML Parser der aber auch HTML mit XPATH-Syntax auslesen kann, ist meist zuverlässiger.