Стилобат
Недавно узнал новое слово — стилобат. В современном значении «стилобат» — это верхняя часть многоуровневого основания. В данном случае там, где я это сфотографировал, дом построен так, что из подъезда выходишь не на уровень земли, а как бы на крышу другого здания. Вот это «здание» и есть стилобат.
«Х» против «Л»
Тут в заметке про переставленные «АХ» и «АЛ» у одного из читателей возникла дельная идея — возможно перестановка этих букв отражает статистику. Не может ли быть «АХ» более частотной, чем «АЛ»?
Я взял базу татарстанского документооборота
«Л» оказалась частотней «Х», что совпадает с их позициями в частотном распределении по русскому языку и, как будто бы, отвергает читательскую теорию.
Но позже, когда пошёл на обед, я понял, что задачу решил неправильно. Зачем смотреть только на вторую букву? Вторая буква нам интересна только в контексте. В общем, пересчитал. Встречаемость «АЛ» в Татарстане — 11534, «АХ» — 14153, таким образом, версия имеет право на существование.
Посещал ли пользователь сайт?
Атака не работает — в браузерах давно реализована защита, у меня идея «сработала» в силу того, что я не выполнил все необходимые проверки.
В прошлом было достаточно много методов определить ходил ли пользовать
Это считалось проблемой, поэтому свойство изменили так, чтобы никакой утечки информации о посещении в ДжаваСкрипт не происходило. Все современные браузеры уже много лет от этого защищены.
Но недавно меня осенило, что есть способ обойти эту защиту!
Ведь если пользователь посещал целевой сайт, то скорее всего
Я попробовал сделать это с «Гитхабом». Самый большой файл, который загружается там с первой страницей — 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. Легко отличить одно от другого.