При внедрении программного обеспечения «СБ ЭНЕРГОСОЛАР» у заказчика, имеющего генерирующие объекты в разных регионах России, мы столкнулись с проблемой сбора данных с сайтов гарантирующих поставщиков электрической энергии. Для сбытовых компаний необходима возможность автоматизированного сбора (парсинга) информации о формируемых тарифах, для расчета стоимости электроэнергии и мощности. Однако на пути к получению чистых и структурированных данных сегодня возникает комплекс проблем.

Гарантирующие поставщики в России обязаны публиковать информацию о ценах на электрическую энергию (мощность) в соответствии с несколькими ключевыми нормативными актами.

Основополагающим документом является Федеральный закон от 26.03.2003 № 35-ФЗ «Об электроэнергетике». Статья 21 данного закона предписывает гарантирующим поставщикам осуществлять раскрытие информации в порядке, установленном Правительством РФ.

Более детальные требования регламентируются:

  1. Постановлением Правительства РФ от 21.01.2004 № 24 (в действующей редакции), которым утверждены «Стандарты раскрытия информации субъектами оптового и розничных рынков электрической энергии».
  2. Постановлением Правительства РФ от 29.12.2011 № 1178 (в части ценообразования), обязывающее ГП публиковать цены (тарифы) на электрическую энергию, поставляемую населению и приравненным к нему категориям потребителей, а также регулируемые тарифы для прочих потребителей.

Согласно этим нормам, на официальном сайте ГП должны быть в открытом доступе:

  • Цены (тарифы) на электрическую энергию и мощность для всех категорий потребителей;
  • Календарные разбивки тарифов по зонам суток (ночь/полупик/пик);
  • Фактические нерегулируемые цены на розничных рынках (для ценовых категорий);
  • Сведения о применении повышающих коэффициентов и наличии льгот.

Парадокс: информация есть, но собрать её нельзя

Несмотря на жесткие законодательные требования, мы столкнулись с парадоксальной ситуацией: юридически данные должны быть открытыми и машиночитаемыми, но физически их сбор превращается в нетривиальную инженерную задачу.

1. Неструктурированный и нестандартизированный вывод данных

Ни один из законов не предписывает конкретный формат публикации. Поэтому каждый гарантирующий поставщик реализует вывод информации по своему усмотрению. На практике это означает:

  • Таблицы в виде картинок (JPG, PNG). Текст на изображении не может быть извлечен без технологий OCR (оптического распознавания символов), которые дают ошибки при размытых шрифтах или сложном фоне.
  • PDF-файлы, созданные из отсканированных документов, где текст — это набор графических примитивов.
  • HTML-таблицы с хаотичным использованием colspan и rowspan, вложенные в несколько уровней навигации.
  • Excel-таблицы с непредсказуемыми изменениями наименований колонок и строк, может просто добавиться пробел после значений или число сохранено как текс, используются разные символы в качестве разделителей.

Отсутствие единого API или хотя бы формата CSV делает сбор данных трудоемким и при автоматизации нет гарантии что в следующем месяце вся структура файлов на сайте и их содержимое будут изменены.

2. «Защита от роботов» как препятствие для закона

Многие современные ГП используют системы защиты от автоматического сбора данных (например, «Web Application Firewall» и сервисы определения ботов). Это приводит к следующим техническим проблемам:

  • Капчи (CAPTCHA), возникающие при частых запросах с одного IP-адреса.
  • Динамическая подмена CSS-классов, из-за которой парсер не может найти нужный элемент на странице после каждого обновления сайта.
  • Блокировка по заголовкам User-Agent или анализ поведения (клики мышью, прокрутка).

Ситуация абсурдна: закон обязывает ГП сделать данные доступными, а IT-отдел ГП (или подрядная организация) одновременно настраивает защиту, которая эту доступность блокирует для автоматических систем.

3. Нестабильность верстки и «поломка» парсеров при редизайне

Сайты гарантирующих поставщиков обновляются непредсказуемо. Если мы написали парсер под конкретную структуру страницы (например, ценовая таблица находится по ссылке , то после планового или аварийного обновления CMS (системы управления контентом) таблица может переместиться в любое другое место, поведение ссылки становиться непредсказуемым или вовсе подгружаться динамически через JavaScript-запрос к внутреннему API. При этом уведомлять пользователей об изменении структуры страниц никто не обязан. В результате ранее рабочий парсер перестает собирать данные, а расчетный отдел получает пропуски в хронологических рядах цен, что делает невозможным корректный расчёт стоимости и приводит к ошибкам.

4. Юридическая неопределенность прав на сбор открытых данных

Даже если техническая проблема решена, возникает правовая: не нарушает ли автоматизированный сбор данных закон? Существует риск столкнуться с претензией на основании:

  • Статьи 146 УК РФ (нарушение авторских прав), если сайт ГП оформлен как составное произведение, а таблица с ценами — как его охраняемая часть. Хотя сами цены не являются объектом авторского права, их оригинальная компиляция или графическое оформление могут быть признаны таковыми.
  • Федерального закона от 27.07.2006 № 149-ФЗ «Об информации…» , где в статье 15.5 содержится запрет на обход технических средств защиты информации. Если ГП установил капчу как такое средство, её автоматическое решение техническими методами формально может быть истолковано как нарушение.

В настоящее время судебной практики по автоматизированному сбору именно цен на электроэнергию почти нет, но общий тренд ужесточения требований к роботам создает зону правовой неопределенности. Аналитик, собирающий данные в законных целях (для собственного анализа или оптимизации закупок), рискует однажды получить блокировку IP-адреса или даже досудебную претензию.

5. Проблема исторической глубины данных

Закон обязывает публиковать актуальные цены и хранить архивные данные за определенный срок (обычно 3–5 лет в зависимости от вида информации). Однако фактически многие ГП удаляют старые тарифные таблицы при обновлении дизайна или обрезают архив до одного-двух лет. В результате невозможно проследить долгосрочную динамику ценообразования, не собирая данные «в реальном времени» ежедневно на протяжении нескольких лет. Это создает барьер входа для новых участников рынка, у которых нет собственного исторического архива.

Пути решения: от технических компромиссов к законодательным инициативам

Технические решения на стороне программного обеспечения

  1. Гибридный сбор (парсинг + OCR + валидация). Современные парсеры выстраивают конвейер: сначала попытка извлечения структурированных данных из HTML, при неудаче – распознавание из PDF/изображений через Tesseract или облачные OCR-сервисы, затем автоматическая валидация по контрольным суммам (например, сумма цен по периодам должна сходиться с общей ценой). Это повышает надежность, но увеличивает затраты на разработку.
  2. Имитация поведения человека. Использование headless-браузеров (Puppeteer, Playwright) с рандомизированными задержками, ротацией User-Agent и прокси-пулов позволяет обходить простые системы защиты, но дорого и неустойчиво против WAF на основе поведенческого анализа.
  3. Мониторинг изменений структуры. Системы сбора данных должны включать модуль «детектора изменений», который сравнивает эталонный XPath с текущей структурой и при расхождении отправляет алерт. Это позволяет быстро переписать парсер вручную, минимизируя пропуски данных.

Технические решения, требующие действий ГП и регулятора

  1. Внедрение стандарта машиночитаемых тарифов. Здесь напрашивается аналогия с сайтом АТС. Технически возможно закрепить обязанность ГП публиковать ценовую информацию не только в виде HTML/PDF, но и в виде файлов формата CSV, JSON или XML с фиксированной схемой данных. Пример – требование ФАС России к операторам связи публиковать тарифы в машиночитаемом виде (Приказ ФАС № 552/21). Аналогичный документ для электроэнергетики решил бы 90% проблем.
  2. Создание единого портала или API гарантирующих поставщиков. Идеальным решением стал бы централизованный агрегатор цен ГП под контролем регулирующего органа (ФАС России или Минэнерго). Например, по аналогии с сайтом «АТС» или порталом госзакупок. Доступ к этому порталу через REST API для автоматических систем мог бы быть открыт после бесплатной регистрации.
  3. Легализация «дружественных роботов» через robots.txt и соглашения. Сейчас robots.txt на сайтах ГП либо отсутствует, либо запрещает всё («Disallow: /»). Необходимо внести в стандарты раскрытия информации (Постановление № 24) прямое указание: субъекты рынка обязаны обеспечить возможность автоматизированного сбора опубликованных цен без применения технических средств блокировки, за исключением обоснованных мер по защите от DDoS-атак. Крупные ГП могли бы ввести «белые» User-Agent для аналитических систем.

Правовые и организационные решения

  1. Уточнение судебной практики. Российский союз промышленников и предпринимателей (РСПП) или НП «Совет рынка» могли бы инициировать обобщение практики по делам о парсинге открытых тарифов. Крайне важно получить разъяснение Верховного Суда: автоматизированный сбор общедоступной ценовой информации, публикуемой во исполнение федерального закона, не является нарушением авторских прав и не составляет «обход технических средств защиты», если не наносит ущерба доступности сайта.
  2. Административная ответственность за «неизвлекаемость» данных. В КоАП РФ можно внести дополнение: публикация тарифов исключительно в графическом или отсканированном виде при отсутствии машиночитаемой альтернативы расценивается как нарушение порядка раскрытия информации со штрафом, аналогичным текущей статье 9.15 КоАП РФ. Это даст регулятору (ФАС) реальный рычаг воздействия на недобросовестные ГП.
  3. Создание отраслевого стандарта API. НП «Совет рынка» совместно с Минэнерго могли бы разработать добровольный отраслевой стандарт API для раскрытия цен. После пилотного внедрения у 3–5 крупных ГП стандарт можно было бы сделать обязательным.

Заключение

Современный рынок электрической энергии парадоксален: данные о ценах являются публичными по закону, но труднодоступными на практике. Основная причина – архаичные способы публикации и технические средства защиты, которые ГП используют добросовестно, но создают тем самым препятствия для развития конкурентной среды.

Пока одни участники рынка вручную собирают тарифы в Excel или нанимают разработчиков для постоянного ремонта парсеров, другие (крупные трейдеры и вертикально-интегрированные компании) имеют собственные отделы сбора данных и договоренности с ГП о предоставлении API «под столом». Это создает неравенство.

Решения существуют и лежат в плоскости разумного компромисса:

  • на техническом уровне – переход ГП на публикацию цен в машиночитаемых форматах по единому шаблону;
  • на правовом уровне – закрепление обязанности обеспечить автоматизированный доступ к тарифам и разъяснение легитимности парсинга;
  • на организационном уровне – создание единого агрегатора цен под эгидой регулятора.

До тех пор, пока эти решения не будут внедрены, сбытовые компании электроэнергии будут вынуждены тратить непроизводительные ресурсы на преодоление искусственных (или вызванных технической отсталостью) барьеров, что противоречит духу и букве законодательства об открытости информации в сфере электроэнергетики и в целом цифровизации экономики.