65 lines
12 KiB
Markdown
65 lines
12 KiB
Markdown
# Аналитическая записка по внешним обращениям парсеров
|
||
|
||
Дата подготовки: 2026-05-18
|
||
|
||
## Краткое описание
|
||
|
||
В backend Mostovik подсистема парсеров реализована как набор Celery-задач и HTTP-клиентов. Парсеры обращаются к открытым государственным источникам, публичным API и, при наличии ключей в переменных окружения, к платным/служебным API. Полученные данные нормализуются и сохраняются в PostgreSQL через сервисный слой.
|
||
|
||
Основные точки входа находятся в `src/apps/parsers/tasks.py`. Внешние HTTP-запросы выполняются через клиенты в `src/apps/parsers/clients/`. Общий HTTP-клиент использует GET/POST, таймауты, стандартный User-Agent и, если включено `PARSER_USE_RUNTIME_PROXIES`, может использовать активные RU-прокси из БД.
|
||
|
||
## Куда обращается и что скачивает
|
||
|
||
| Источник | Адреса обращения | Что скачивается / получается |
|
||
|---|---|---|
|
||
| Минпромторг: сертификаты промышленного производства | `https://minpromtorg.gov.ru/api/kss-document-preview` | JSON-список документов, затем последний Excel-файл из поля `files[].url`. Из Excel берутся номер заключения, даты, ссылка на документ, наименование организации, ИНН, ОГРН. |
|
||
| Минпромторг: реестр производителей | `https://minpromtorg.gov.ru/api/kss-document-preview` | JSON-список документов, затем последний Excel-файл `data_orgs_YYYYMMDD...`. Из Excel берутся наименование производителя, ИНН, ОГРН, адрес. |
|
||
| Минпромторг: промышленная продукция | `https://minpromtorg.gov.ru/api/kss-document-preview` | JSON-список документов, затем Excel-файл реестра промышленной продукции. Из Excel берутся организация, ИНН, ОГРН, регистрационный номер, наименование продукции, модель, ОКПД2, ТН ВЭД, нормативный документ. |
|
||
| ГИСП: промышленная продукция | `https://gisp.gov.ru/pp719v2/pub/prod/`, технический API `https://gisp.gov.ru/pp719v2/pub/prod/b/` | В каталоге источников этот адрес указан как upstream для продукции. Универсальный файловый клиент умеет получить первую страницу JSON через POST на `/pp719v2/pub/prod/b/`; основная Celery-задача `parse_industrial_products` сейчас использует Excel discovery Минпромторга. |
|
||
| Генпрокуратура: единый реестр проверок | `https://proverki.gov.ru/portal/public-open-data/check/{year}/{month}?isFederalLaw248=true|false`, `https://proverki.gov.ru/portal/public-open-data/check/{year}/plans?isFederalLaw248=true|false` | ZIP/XML выгрузки с проверками или планами проверок. При необходимости используется Playwright: открывается страница портала, выбирается вкладка скачивания, загружается ZIP/XML. |
|
||
| ЕИС закупки: SOAP-интеграция | `https://int44.zakupki.gov.ru/eis-integration/services/getDocsIP` | SOAP-запрос возвращает `archiveUrl`; затем скачивается ZIP/XML-архив закупок/контрактов. Для доступа используется `ZAKUPKI_TOKEN` из окружения. |
|
||
| ЕИС закупки: HTTP fallback | `https://zakupki.gov.ru/opendata/download/notifications/{region}/{year}/...` | ZIP-архивы с XML-файлами закупок, если SOAP-токен не используется или передана прямая ссылка. |
|
||
| ЕИС/FAS generic-источники | `https://zakupki.gov.ru/epz/order/extendedsearch/results.html`, `https://zakupki.gov.ru/epz/orderclause/search/results.html`, `https://zakupki.gov.ru/epz/contract/search/results.html`, `https://zakupki.gov.ru/epz/dishonestsupplier/search/results.html`, `https://fas.gov.ru/pages/activity/reestr-uridicheskih-lic` | HTML-страницы официальных реестров. Парсер извлекает карточки/таблицы: закупки 44-ФЗ, закупки 223-ФЗ, контракты, недобросовестные поставщики, сведения ФАС по ГОЗ. |
|
||
| ФНС: бухгалтерская отчетность | Автоматического HTTP-скачивания с ФНС в текущем коде не найдено. В каталоге источников указан справочный URL `https://bo.nalog.gov.ru/advanced-search/organizations/search?...` | Обрабатываются локально загруженные или положенные в папку `input/fns` файлы `fin_{id}_{ogrn}.xlsx`, а также ZIP-архивы с такими файлами. Из Excel берутся строки форм N 1, 2, 3, 4, 6 бухгалтерской отчетности. |
|
||
| КАД Арбитр через Checko | Официальный источник в каталоге: `https://kad.arbitr.ru/`; фактический lookup в коде: `https://api.checko.ru/v2/legal-cases` | JSON-ответы по арбитражным делам для активных организаций из внутренних реестров. В запрос передаются ИНН/ОГРН. В payload сохраняются номер дела, суд, тип, статус, даты, суммы, стороны и ссылка на карточку. |
|
||
| Федресурс/ЕФРСБ | `https://bankrot.fedresurs.ru/`; fallback: `https://api.checko.ru/v2/company` | Официальный источник обрабатывается как HTML/структурированная выгрузка. При недоступности портала используется Checko: по ИНН/ОГРН организации берутся сведения о банкротных сообщениях из JSON. |
|
||
| ФСТЭК | `https://reestr.fstec.ru/reg3` и найденные на странице ссылки вида `module=rfiles` или `/uploads/reg...` | HTML-страница реестра, затем CSV/файловая выгрузка, если ссылка найдена. Для этого источника в коде отключена SSL-верификация. |
|
||
| Вакансии: Работа России | Клиент использует `http://opendata.trudvsem.ru/api/v1/vacancies`, `http://opendata.trudvsem.ru/api/v1/vacancies/company/inn/{inn}`; в каталоге источников указан `https://opendata.trudvsem.ru/api/v1/vacancies` | JSON-список вакансий, включая работодателя, ИНН/ОГРН при наличии, название вакансии, дату, зарплату, статус, ссылку. |
|
||
| Вакансии: HeadHunter | `https://api.hh.ru/vacancies` | JSON-список вакансий. Поиск выполняется по региону и/или тексту, для организаций без поиска по ИНН используется нормализованное название. |
|
||
| Вакансии: SuperJob | `https://api.superjob.ru/2.0/vacancies/` | JSON-список вакансий. Используется только если задан `SUPERJOB_APP_ID`; ключ передается в заголовке `X-Api-App-Id`. |
|
||
| Checko: контракты и проверки по организациям | `https://api.checko.ru/v2/contracts`, `https://api.checko.ru/v2/inspections` | JSON-данные по контрактам и проверкам для активных организаций из внутренних реестров. В запрос передаются ИНН/ОГРН, API-ключ передается параметром `key`. |
|
||
| Proxy-Tools | `https://proxy-tools.com/api/v1/proxies` | Служебная загрузка списка RU-прокси для парсеров. Используется только при заданном `PROXY_TOOLS_API_KEY`; запрос идет с Bearer-токеном. |
|
||
|
||
## Форматы загружаемых данных
|
||
|
||
Парсеры работают со следующими форматами:
|
||
|
||
- JSON-ответы публичных/платных API.
|
||
- Excel-файлы `.xlsx`/`.xlsm` с реестрами Минпромторга и бухгалтерской отчетностью ФНС.
|
||
- ZIP-архивы с XML/CSV/JSON/HTML/XLSX-файлами.
|
||
- XML-файлы выгрузок проверок и закупок.
|
||
- HTML-страницы официальных реестров с таблицами или карточками.
|
||
- CSV-файлы, в частности для ФСТЭК.
|
||
|
||
Скачанные файлы не исполняются как код: они читаются как данные, парсятся и сохраняются в БД.
|
||
|
||
## Передаваемые наружу параметры
|
||
|
||
Во внешние запросы могут уходить:
|
||
|
||
- периоды загрузки: год, месяц, дата;
|
||
- коды регионов;
|
||
- ИНН/ОГРН организаций из внутренних активных реестров;
|
||
- поисковая строка по названию организации для вакансий;
|
||
- служебные ключи API из окружения: `ZAKUPKI_TOKEN`, `CHECKO_API_KEY`, `SUPERJOB_APP_ID`, `PROXY_TOOLS_API_KEY`.
|
||
|
||
Ключи в коде не захардкожены, берутся из переменных окружения.
|
||
|
||
## Важные оговорки
|
||
|
||
- Для ряда задач предусмотрен параметр `file_url`. Если оператор передает его вручную, парсер скачивает файл по переданной ссылке, а не только по дефолтному адресу источника.
|
||
- Для ФНС текущая реализация backend не скачивает файлы автоматически с сайта ФНС, а обрабатывает уже полученные Excel/ZIP-файлы через папку наблюдения или API-загрузку.
|
||
- Для `proverki.gov.ru` возможен запуск headless Chromium через Playwright, потому что часть загрузок доступна через JS-интерфейс портала.
|
||
- Для ФСТЭК SSL-верификация отключена настройкой клиента источника.
|
||
- Runtime-прокси из БД используются только при включенном `PARSER_USE_RUNTIME_PROXIES=true`; отдельная задача синхронизации прокси обращается к Proxy-Tools только при наличии `PROXY_TOOLS_API_KEY`.
|