From 1619d78241becb97e681f3b33fbb330645d1d3ef Mon Sep 17 00:00:00 2001 From: Vladimir Buzalka Date: Tue, 12 May 2026 22:03:09 +0200 Subject: [PATCH] notebookvb --- .../209 ZPŠ/NOTES.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Insurance/StahováníSeznamuPojištěnců/209 ZPŠ/NOTES.md diff --git a/Insurance/StahováníSeznamuPojištěnců/209 ZPŠ/NOTES.md b/Insurance/StahováníSeznamuPojištěnců/209 ZPŠ/NOTES.md new file mode 100644 index 0000000..3b5f30d --- /dev/null +++ b/Insurance/StahováníSeznamuPojištěnců/209 ZPŠ/NOTES.md @@ -0,0 +1,62 @@ +# ZPŠ — Podávání žádostí o výpis registrovaných pojištěnců + +## Co skript dělá + +`PodejZadostSeznamZPS.py` podává žádost o výpis registrovaných pojištěnců ZPŠ +za jeden měsíc (poslední den daného měsíce). Bez prohlížeče, bez NMSigneru — čistý Python. + +## Flow + +1. **Přihlášení** — stejný certifikátový login jako ostatní ZPŠ skripty (`01_prihlaseni.py`): + - GET `/app/prihlaseni` → session cookie + - POST `/json-api/prihlaseni/prihlasovaci-zprava` → challenge (`zprava`) + - Podpis challenge certifikátem (PKCS7/SHA-256, **s** certifikátem) + - POST `/json-api/prihlaseni/prihlaseni-certifikatem` → autentizovaná session + +2. **Sestavení XML žádosti**: + ```xml + + 25520 + DD.MM.YYYY + jmeno + soubor + + ``` + Konce řádků: `\r\n` (NMSigner normalizace) + +3. **Podpis XML** — PKCS7/SHA-256, **bez** certifikátu v podpisu (`NoCerts`): + - Server při odesílání formuláře zná certifikát z registrace + - Certifikát v podpisu server odmítá ("Podepsaná data obsahují certifikát") + - Rozdíl oproti přihlášení: login certifikát potřebuje, formulář ne + +4. **Odeslání**: + - POST `https://portal.zpskoda.cz/json-api/formular-schranky/29-vypis-registrov-pojistencu/ulozit-formular` + - Body: `{"schrXml": "...", "schrSign": "-----BEGIN PKCS7-----...", "schrFiles": []}` + - Odpověď obsahuje referenční číslo podání + +## Klíčový objev + +Portál používá **NMSigner** (Chrome extension + lokální app) pro podepisování formulářů. +Přišli jsme na to odposlechem síťového provozu v DevTools — stačil jeden XHR request. +NMSigner dělá přesně to co my: PKCS7 DetachedSignature bez certifikátu. +Výsledek: žádný prohlížeč ani NMSigner není potřeba. + +## Soubory + +| Soubor | Popis | +|--------|-------| +| `PodejZadostSeznamZPS.py` | Hlavní skript — přihlášení + podání žádosti | +| `stav.json` | Poslední úspěšně podaný měsíc `{"mesic": 4, "rok": 2026}` | +| `log_podani.json` | Historie podání s referenčními čísly | + +## Parametry + +- **IČZ**: 25520 (IČZ: 09305000, MUDr. Michaela Buzalková) +- **Certifikát**: `Insurance/Certificates/MBQualifiedCert.pfx` +- **Typ výstupu**: `soubor` (Soubor dle datového rozhraní) +- **Řazení**: `jmeno` (příjmení a jména) + +## Stav + +Podáno: 01/2025 – 04/2026 (16 měsíců). +Příští spuštění podá 05/2026 (jakmile bude k dispozici).