DOM.РФ накатил WAF между 2026-05-17 и 2026-05-24 на /сервисы/api/object/*/*.
Без session cookies (___dmpkit___, domain_sid) — все запросы → 403 + WAF
challenge HTML. Cookies выдаются после visit на /сервисы/каталог-новостроек/.
Дополнительно DOM.РФ переименовал 6 endpoints (photos, 5 × doc_*) — старые
URLs возвращают тот же WAF catch-all.
Run 26 (2026-05-24): 15,340 fail requests (1534 obj × 10 endpoints).
Extras snapshots не обновлялись с 2026-05-17.
- stealth.py: BrowserSession.warm_up() — visit catalog listing, кэшит WAF cookies
- domrf_kn.py: warm_up() перед Phase A/B/C (покрывает все extras запросы)
- domrf_catalog_object.py: warm_up() перед SSR HTML fetch batch
PR #335 использовал `with db.begin_nested():` SAVEPOINT для per-row UPDATE,
но outer transaction никогда не commit'ился. После цикла Celery task
закрывал session (`db.close()` в finally) → autobegin'd outer tx
rollback → все UPDATE'ы теряются.
Симптом: task завершается с processed=3 succeeded=3, в Glitchtip нет ошибок,
но в БД ни одного catalog_scraped_at != NULL.
Fix: добавлен db.commit() после цикла + rollback на ошибку commit'а.