Интеграции · госпортал без API
Поиск судебных дел на портале без публичного API
Клиент:
sattar.kz
Категория: Интеграции
Стек: PHP, cURL, DOMDocument/DOMXPath, эмуляция сессии JSF
Срок: 1–2 недели
Проблема
В sattar.kz нужен был программный поиск судебных дел контрагентов на государственном портале судов — у портала нет публичного API, только устаревший веб-интерфейс на JSF/RichFaces.
Ограничения
Портал построен на legacy Java/JSF-стеке без REST: служебные идентификаторы формы и вёрстка нестабильны между релизами портала, авторизация держится на состоянии сессии.
Что сделал
- Эмуляция браузерной сессии: cookie jar + обработка JSF ViewState и Ajax partial-response
- Авторизация и поиск дел по стороне процесса с фильтрами по суду и году
- DOMXPath-парсер результатов с каскадом селекторов и fallback-стратегиями на случай изменения вёрстки
- Дедупликация результатов и отдача структурированного JSON вместо сырого HTML
- Конфигурация вынесена в константы для быстрой перенастройки без правки логики парсинга
Архитектура
Портал суда (JSF/RichFaces)
→ Эмуляция сессии
→ XPath-парсер
→ JSON API
Результат
Поиск дел по контрагенту стал программным JSON-запросом вместо ручного похода на портал — с устойчивостью к мелким изменениям вёрстки за счёт fallback-парсинга.
Что можно переиспользовать
Паттерн эмуляции legacy JSF-портала без REST API
XPath-парсинг с graceful fallback при изменении вёрстки
Дедупликация результатов скрейпинга