70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
"""
|
|
Přihlášení na portál ZPMVČR (eforms.zpmvcr.cz) jménem a heslem.
|
|
Odlišná platforma od portalzp.cz — přihlášení přes POST formulář s polem PIN a heslo.
|
|
|
|
Přihlašovací pole:
|
|
pin — přihlašovací jméno (zobrazeno jako "PIN" na stránce)
|
|
pin2 — druhá část PINu (obvykle prázdné)
|
|
pwd — heslo
|
|
|
|
POUŽITÍ:
|
|
pip install requests
|
|
python 01_prihlaseni.py
|
|
"""
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
import requests
|
|
|
|
# ── Přihlašovací údaje ────────────────────────────────────────────────────────
|
|
PIN = "9023895287"
|
|
PIN2 = "" # druhé pole PINu — obvykle prázdné
|
|
HESLO = "Ax162q8+"
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
LOGIN_URL = "https://eforms.zpmvcr.cz/eforms/ekomunikace"
|
|
COOKIES_FILE = os.path.abspath(os.path.join(os.path.dirname(__file__), "zpmvcr_cookies.json"))
|
|
|
|
|
|
def main() -> None:
|
|
session = requests.Session()
|
|
session.headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
|
|
|
|
# 1. GET → session cookie
|
|
r = session.get(LOGIN_URL, timeout=15)
|
|
r.raise_for_status()
|
|
|
|
# 2. POST přihlášení
|
|
r = session.post(LOGIN_URL, data={"pin": PIN, "pin2": PIN2, "pwd": HESLO}, timeout=15)
|
|
r.raise_for_status()
|
|
|
|
# Úspěch = server přesměroval pryč z login stránky na redir nebo smluvni
|
|
if "pin" in r.text and "Přihlásit" in r.text:
|
|
print(f"Prihlaseni selhalo — zkontroluj PIN a HESLO. URL: {r.url}")
|
|
sys.exit(1)
|
|
|
|
print(f"Prihlaseni uspesne — {r.url}")
|
|
|
|
cookies = [
|
|
{
|
|
"name": c.name,
|
|
"value": c.value,
|
|
"domain": c.domain if c.domain.startswith(".") else "." + c.domain,
|
|
"path": c.path or "/",
|
|
"expires": int(c.expires) if c.expires else -1,
|
|
"secure": bool(c.secure),
|
|
"httpOnly": False,
|
|
"sameSite": "Lax",
|
|
}
|
|
for c in session.cookies
|
|
]
|
|
with open(COOKIES_FILE, "w", encoding="utf-8") as f:
|
|
json.dump(cookies, f, indent=2, ensure_ascii=False)
|
|
print(f"Ulozeno {len(cookies)} cookies -> {COOKIES_FILE}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|