Стилобат

Недавно узнал новое слово — стилобат. В современном значении «стилобат» — это верхняя часть многоуровневого основания. В данном случае там, где я это сфотографировал, дом построен так, что из подъезда выходишь не на уровень земли, а как бы на крышу другого здания. Вот это «здание» и есть стилобат.

Навигационный знак: «ПОДЪЁМ НА СТИЛОБАТ», «ВЫХОД К ПОДЪЕЗДАМ Р. ГАРЕЕВА, Д. 105 Б» с иконкой лестницы и человека, логотип «СУВАР СДЕЛАНО».

Оставить комментарий

«Х» против «Л»

Тут в заметке про переставленные «АХ» и «АЛ» у одного из читателей возникла дельная идея — возможно перестановка этих букв отражает статистику. Не может ли быть «АХ» более частотной, чем «АЛ»?

Я взял базу татарстанского документооборота (всё-таки в Татарстане набор фамилий отличается от центральной России) и посмотрел сколько раз встречаются эти буквы на второй позиции. В базе полторы тысячи человек, довольно репрезентативная выборка.

«Л» оказалась частотней «Х», что совпадает с их позициями в частотном распределении по русскому языку и, как будто бы, отвергает читательскую теорию.

Скриншот терминала с SQL-запросами: подсчёт общего числа записей в таблице usr (1522219) и распределение по первым буквам имени — 42309 на «л» и 16144 на «х».

Но позже, когда пошёл на обед, я понял, что задачу решил неправильно. Зачем смотреть только на вторую букву? Вторая буква нам интересна только в контексте. В общем, пересчитал. Встречаемость «АЛ» в Татарстане — 11534, «АХ» — 14153, таким образом, версия имеет право на существование.

2 комментария

Посещал ли пользователь сайт?

Атака не работает — в браузерах давно реализована защита, у меня идея «сработала» в силу того, что я не выполнил все необходимые проверки.

В прошлом было достаточно много методов определить ходил ли пользовать на какой-то сайт или нет. В основном, идея была проста: у себя на сайте через CSS каким-то способом выделяем посещённые (:visited) ссылки — например, делаем таким ссылкам шрифт больше, а потом через ДжаваСкрипт смотрим у каких ссылок ширина стала больше расчётной.

Это считалось проблемой, поэтому свойство изменили так, чтобы никакой утечки информации о посещении в ДжаваСкрипт не происходило. Все современные браузеры уже много лет от этого защищены.

Но недавно меня осенило, что есть способ обойти эту защиту!

Ведь если пользователь посещал целевой сайт, то скорее всего какие-то его ресурсы легли в кеш. Если найти какой-то ресурс этого сайта большого размера, загрузить его и попытаться определить за какое время это произошло, то по этой разнице можно понять — был он в кеше или нет.

Я попробовал сделать это с «Гитхабом». Самый большой файл, который загружается там с первой страницей — vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_primer_octicons-react_di-b40d97-9b98c5140e22.js. Занимает он 136 килобайт, вполне подходящий размер.

Как же определить момент когда он загрузится? Если посмотреть внутрь, видно, что он после скачивания создаёт свойство webpackChunk в объекте globalThis. Если перехватить обращение к этому свойству, можно понять, что файл загружен:

const t = new Date();
Object.defineProperty(globalThis, 'webpackChunk', {
  set: function() {
    console.log(new Date() - t);
  }
});

Ниже этого кода подключаем загрузку указанного файла прямо с «Гитхаба» через тег <script> и дело в шляпе.

Я проверил, если очистить кеш браузера, то файл у меня загружается примерно за 100—400 миллисекунд, если берётся из кеша — это 0—12. Легко отличить одно от другого.

10 комментариев