Центризбирком РФ обфусцировал статистические данные выборов на своем сайте, вероятно, чтобы затруднить их анализ
Российский ученый Сергей Шпилькин, известный своими исследованиями статистических аномалий в результатах российских выборов, в своем фейсбуке сообщил о том, что по состоянию на 19 сентября 2021 года на сайте Центризбиркома РФ невозможно скопировать данные со страницы с результатами выборов.
Таблица с данными в браузере отображается корректно, однако при попытке скопировать и вставить текст, либо при чтении исходного кода страницы, вместо чисел в некоторых ячейках виден только случайный набор символов.
Ссылка на страницу для примера: http://www.izbirkom.ru/region/region/karachaev-cherkess?action=show&root=92000011&tvd=4094002721588&vrn=100100225883172®ion=9&global=&sub_region=9&prver=0&pronetvd=null&vibid=4094002721588&type=242
![](https://webcf.waybackmachine.org/web/20211006201938/https://habrastorage.org/getpro/habr/upload_files/5c4/738/d95/5c4738d95369cb6376a3c5e419032b0e.png)
Судя по всему, реализовано это генерацией специальных CSS-стилей и специальных шрифтов, причем при каждом обновлении страницы названия стилей и шрифтов разные.
![](https://webcf.waybackmachine.org/web/20211006201938/https://habrastorage.org/getpro/habr/upload_files/d84/540/151/d84540151d97257f4cfeae884f8a5f85.png)
![](https://webcf.waybackmachine.org/web/20211006201938/https://habrastorage.org/getpro/habr/upload_files/129/971/217/129971217b500d425bce4d750e4bed57.png)
О причинах подобной обфускации пока что ничего неизвестно, однако, как предполагает сам ученый и комментаторы в фейсбуке, сделано это для затруднения автоматизированного анализа результатов выборов независимыми аналитиками.
Upd. Пользователь @jtraub также заметил, что кроме использования сгенерированных шрифтов для подстановки символов, в страницу также вставляются дополнительные скрытые span'ы для затруднения парсинга.
Upd2. @nin-jin предложил изящный 25-строчник на JS, который легко преобразовывает страницу в нормальный текст с помощью html2canvas и tesseract.
Upd3. @strayge предложил решение на Python с улучшенной точностью.
Upd4. Теперь еще есть дешифратор от @aulitin не испольщующий браузер и OCR.
Upd5. ЦИК убрал обфускацию со страниц со старыми данными, но новые данные по-прежнему обфусцированы: http://www.izbirkom.ru/region/region/karachaev-cherkess?action=show&root=92000011&tvd=4094002721588&vrn=100100225883172®ion=9&global=&sub_region=9&prver=0&pronetvd=null&vibid=4094002721588&type=242
Upd6. И еще инструмент от @lifeair: https://github.com/LiFeAiR/izbirkom31
Follow-ups: https://habr.com/ru/post/579418, https://habr.com/ru/post/579492/