Инновационные технологии государственного сайтостроения

6 May
Инновационные технологии государственного сайтостроения

Сегодня случайно наткнулся на очередные инновационные нано-технологии в области государственного сайтостроения.

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

Решил сегодня прокатиться по делам, на машине. Слышал для этого сейчас нужно получать какое-то разрешение. Давно уже прочитал про кривое приложение для смартфона, созданное по описанному чуть выше принципу. Лишней мобилы для установки вирусов у меня сейчас нет, потому пошел искать варианты получения пропуска без порчи смартфона. К счастью, такие варианты есть, через СМС или ГОСУСЛУГИ.

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

Нашел еще один государственный ресурс, на котором можно проверить наличие пропуска по номеру авто - https://www.mos.ru/covid-19-deptrans/ - выглядит вроде не плохо, да и работает вроде, что-то проверяет. Через пару минут после получения разрешения номера моей машины в этой базе все еще не было. Сидеть чекать эту страницу вручную было не интересно. Подумал, теоретически я мог бы сейчас по-быстрому накидать скрипт, который будет автоматом чекать номер моего авто, и зазвонит когда мой авто появится в базе. Но, наивно подумав что сайт делал кто-то адекватный, и капча на сайте это капча, на обход которой придется потратить много времени, решил не заморачиваться. На прощание решил все-таки посмотреть страницу в инспекторе кода... и увидел там... гениальное изобретение...

Дальше во всей красе поймут только разработчики, понимающие что такое векторная графика и для чего на сайтах нужна капча. Кто шарит наверное уже догадались. SVG-капча (https://www.mos.ru/covid-19-deptrans/captcha.svg). Это каким сверхразумом надо быть чтобы до такого додуматься? Они на этой капче даже цифры не искажают, за то перечеркивают их, отдельными тэгами разумеется. А еще цвет отдельных элементов меняют. Вот это я понимаю - защита! Только здесь она не от ботов, как на нормальных сайтах, а от людей.

Для тех кто не понял о чем речь попробую объяснить. Капча - это картинка на сайте, с которой нужно что-либо сделать, обычно повторить что на ней написано, решить нарисованное на ней уравнение, угадать объект и т.д. Капчи устанавливаются на сайты для защиты от роботов. Роботы - это программы, которые заходят на сайты вместо людей, для всяких своих целей, которые обычно не выгодны разработчику сайта. Как минимум, роботы создают лишнюю, обычно бесполезную, а бывает и вредную для сайта нагрузку, чаще используются для спама и воровства контента. Наиболее распространенный вариант избавиться от роботов - установить капчу. Роботу, в отличие от человека, намного труднее понять что именно изображено на картинке, потому капчи наиболее распространены в виде картинок. Но вот SVG - это векторный формат, это совсем не такая картинка как JPG, PNG, GIF и т.д. Не буду вдаваться в подробности, скажу просто - это формат, который максимально легко читается роботами. Да, можно постараться, сделать такой SVG, который роботу будет труднее понять. Но, во первых - это бред, капчу намного проще и главное правильней отдавать в растре (в идеале JPG), и во вторых - это совершенно не тот случай. Такая капча, как на указанном выше сайте, абсолютно никак не защищает сайт от роботов, скорее даже наоборот - создана именно для того, чтобы ее без труда распознал даже самый глупый робот. Вместо борьбы с роботами, как на нормальных сайтах, здесь целью капчи является только одно - борьба с реальными людьми, абсолютно бессмысленное усложнение процедуры использования сайта для реальных пользователей. На самом деле думаю все гораздо проще. Опять распилили бюджет или по блату отдали разработку умственно отсталому сыну какого-нибудь депутата.

Любой опытный web-разработчик подтвердит, что работа программиста такого уровня (кто мог до такого додуматься) реально стоит максимум 50 рублей, думаю на фрилансе даже найдутся школьники, которые сделают это за 5-10 рублей. Ну это реально работа в стиле "делаю свой первый сайт, ничего в этом не понимаю, строго не судите". Эту капчу явно разрабатывали на заказ, без понимания что это и зачем, мысли разработчиков скорее всего были примерно такими - "Нужна ли нам капча? А что это вообще такое? Скорее всего это просто модно, стильно и элегантно. Люди наверное просто любят разгадывать эти капчи, потому они и стоят на всех сайтах, чтобы порадовать пользователей. Государственные сайты не должны отставать от современной моды, значит нам тоже нужна капча".

Как расшифровать

Для совсем глупых. Рефрешим несколько раз капчу, чтобы получить из SVG (path.d) набор координат всех возможных знаков. Должна получиться небольшая база из 20 значений:

  • Цифры от 1 до 9 слева.
  • Цифры от 1 до 9 справа.
  • Плюс и минус по середине.

Все. Далее капча разгадывается путем сравнения с этой базой. Сравнивать координаты (да и заносить в базу) целиком не нужно. Достаточно сравнить первые ~20 точек. Цифры на каждой капче немного смещаются, потому координаты при проверке один в один не совпадут. Нужно сравнивать в диапазоне ~+/-1.

P.S. Готовый скрипт есть, я его написал, для запуска в браузере через инспектор кода, сюда не добавил потому что забыл куда сохранил, заново собирать базу в лом, если найду добавлю (если не забуду).