Перейти к содержимому

Глоссарий

Объект window.chrome

Сайту, который хочет знать, правда ли перед ним Chrome, не обязательно верить имени, которым браузер себя называет. Он смотрит на этот объект и сверяет одно с другим.

Объект window.chrome это набор свойств Chrome, который настоящий Chrome оставляет на каждой открытой странице.

Что стоит за этим именем

Объект это горстка свойств, которые Chrome держит для своих расширений и своих замеров загрузки. Страница почти ничем из этого воспользоваться не может, а увидеть может всё.

  • Канал для разговора с расширениями

    Его переговорная часть есть на обычных страницах, поставлено расширение или нет.

  • Два старых замера загрузки

    Числа о загрузке страницы старше нынешнего способа их читать, и Chrome их до сих пор носит.

  • Оставшийся признак установки

    След от упакованных веб-приложений: на него до сих пор отвечают, и проверки его до сих пор читают.

Зачем его ищет проверка на робота

Чтение занимает одну строку и не требует разрешения. Его сверяют с именем, которым назвался браузер, и найти расхождение дёшево, а объяснить его нечем.

  • Имя говорит Chrome

    Почти любой автоматический браузер называет себя Chrome, потому что всё прочее встречается ещё реже.

  • Объект говорит иначе

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

  • Решает пара

    Ни то, ни другое не опознаёт человека. Вместе они отделяют браузер от того, что надело его имя.

Три способа провалить это чтение

Браузер попадается здесь тем, что не несёт ничего, несёт слишком мало или несёт вид, которого не было ни у одного выпуска Chrome.

  1. 1

    Нет вовсе

    Объекта нет, и браузер одной строкой возразил собственному имени.

  2. 2

    Пустая оболочка

    Объект есть, переговорной части нет: так выглядит наспех поставленная заплата.

  3. 3

    Вид ниоткуда

    Свойства, которых нет ни в одном выпуске, звучат так же громко, как их отсутствие.

Что делает наш движок

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

Самопроверка спрашивает его у каждого профиля, и на приёмке сборки, которая едет сегодня, он был на месте.

  • На отгружаемой сборке он есть

    Замерено на профиле, который называл одну систему, работая на другой: это и есть трудный случай.

    есть
  • Читается рядом с полями подсказок

    Тот же прогон сверяет платформу, её версию и архитектуру, о которых профиль сообщает подсказками клиента.

    сверено одним прогоном
  • Встроенный движок дополняет нехватку

    Там, где программа идёт не на нашей сборке, недостающие части дописываются, и самопроверка всё равно называет итог.

    итог назван в любом случае

Дописанное позже слабее родного

Объект, написанный со страницы, лежит поверх браузера, а не внутри него. Его части несут собственный исходник, и проверка печатает этот исходник одной строкой.

  • Исходник печатается

    Любую часть можно попросить показать себя, и написанная рукой покажет ровно то, что написали.

  • Кадр это новая страница

    Дописанное на одной странице не появляется в кадре, который эта страница создала, пока туда не допишут снова.

  • Вид продолжает меняться

    Chrome меняет содержимое этого объекта от выпуска к выпуску, и застывшая копия со временем сама становится приметой.

Как проверить свой

Консоль браузера отвечает на это одной строкой, и проверка пользуется той же строкой. Важен не сам ответ, а то, сходится ли он с именем, которым назвался браузер.

Внутри программы самопроверка спрашивает в профиле и против того движка, который этот профиль запустил, и ставит ответ рядом с остальными показаниями.

Чего это не делает

  • Это не отличает два профиля друг от друга. Объект несёт каждый настоящий Chrome, поэтому связь между вашими профилями он не разрывает.
  • Это не отвечает за то, что дописывает расширение. Код, который расширение вносит в страницу, до объекта дотягивается, и сайт читает то, что там окажется.
  • Это не превращает браузер в Chrome. Согласие здесь одно показание из многих, а рисующие поверхности весят куда больше.
  • Это не отвечает за браузер, в котором вы это читаете. Страница называет показание, а отвечает на него только профиль внутри программы.

Проверить

Каждое утверждение выше взято из файла, который можно открыть.

Самопроверка спрашивает объект у каждого профиля
apps/desktop/src/lib/fpAudit.js
Что дописывает встроенный движок там, где среда пуста
apps/desktop/src/injected/fingerprint.js
Приёмка сборки, которая едет сегодня
engine/приёмка-отчёт.json
Правила самой самопроверки тоже проверяются
apps/desktop/test/fp-audit.js

Вопросы

Можно ли посмотреть самому?
Да. Откройте консоль браузера на любой странице и спросите объект по имени: настоящий Chrome ответит объектом, а не пустотой.
Есть ли он у других браузеров?
У собранных из того же исходника обычно есть, в своём виде. Проверка сверяет объект с именем браузера, а не объект с одним лишь Chrome.
Меняет ли его расширение?
Может менять. Код, который расширение кладёт в страницу, работает в странице, и всё оставленное им сайту видно.
Хватит ли пропажи объекта, чтобы закрыть аккаунт?
Самой по себе редко. Это дешёвое свидетельство, что сессия не та, за кого себя выдаёт, и его взвешивают вместе с соседними показаниями.
Почему просто не дописывать объект везде?
Потому что дописанное со страницы читается как дописанное. Наш движок несёт объект оттого, что он и есть Chromium, а это другое утверждение о той же строке.

Посмотрите, что ответит ваш профиль

Самопроверка идёт внутри профиля и показывает все 29 замеров, и зелёные, и красные.