Тест «наш браузер устарел» можно обмануть

Я заметил, что последнюю проверку на meta.discourse.org или discover.discourse.com, призванную предотвратить просмотр страниц в современном режиме (например, в Firefox 115.27.0), можно обойти с помощью uBlock Origin, AdGuard или даже AdBlock/Adblock Plus:

! Достаточно одного из четырёх правил:
meta.discourse.org##+js(aopw, unsupportedBrowser)
! Менее стабильные варианты:
meta.discourse.org##+js(set, unsupportedBrowser, undefined)
meta.discourse.org##+js(set, unsupportedBrowser, false)
meta.discourse.org##+js(set, unsupportedBrowser, '')
! Раз в несколько десятков просмотров при использовании версии с set-constant может возникать состояние гонки, из-за чего блокировщик контента перестает работать, и правильный предпросмотр включается в упрощённом HTML.
  • aopw = abort-on-property-write[1]
  • set = set-constant[2] (override-property-read для AdBlock и ABP)

Возможно, стоит использовать более надёжный метод? Один из явных недостатков сейчас заключается в том, что сноски, добавленные в ответы или вводные посты, точно не работают с этим трюком (возможно, используется CSS, кроме известной проблемы с относительным синтаксисом цветов, или слишком новый JS).


  1. Библиотека ресурсов · gorhill/uBlock Wiki · GitHub #abort-on-property-writejs- ↩︎

  2. Библиотека ресурсов · gorhill/uBlock Wiki · GitHub #set-constantjs- ↩︎

Извините, не могли бы вы немного подробнее?

Вы имеете в виду, что любая стандартная установка uBlock Origin в старом браузере обходит нашу проверку?

1 лайк

Я добавлю STR:

  1. Установите uBlock Origin из официального магазина в Firefox 115.27.0, так как в API Manifest V2 для дополнений Firefox нет значимых новых функций, которые могли бы заставить пользователей оставаться на устаревшей версии uBO (в других широкополосных блокировщиках контента шаги аналогичны (вкладка для ваших собственных фильтров может называться иначе)).

  2. Перейдите в его настройки и на вкладку «Мои фильтры».

    • На этом этапе хочу отметить, что ни один список по умолчанию не осмелился добавить скриптлет с длинным списком запятых. Скорее, уровень сложности не слишком высок только для элиты, которая знает основы JavaScript методом «проб и ошибок», чтобы сделать то же самое.
  3. Вставьте одно из 4 предложений (простота всех 4 фильтров означает, что нет смысла защищать авторство, так как кто-то придумал их как минимум за день до меня).

    • Я предполагаю, что пока нет списка «подпишись и забудь» или скрипта для Tampermonkey/Violentmonkey/Greasymonkey, который делает то же самое в режиме «установи и забудь» (а сообщество или волонтёр позаботится о постоянном обновлении списка или скрипта).
  4. Откройте или обновите форум, и страница загрузится в «современном» виде, а не в упрощённом HTML (если не возникнет состояние гонки при выборе версии на основе set-constant).

    • Как я уже писал, единственная видимая неисправность — неработающие сноски (я недостаточно разбираюсь в отладке веб-сайтов, чтобы определить, чего нам не хватает, поскольку это не единственный неудачный тест «относительной цветовой синтаксиса» (пузырь имеет почти нулевой размер и это не просто невидимый текст, если бы цвет был задан относительно)).

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

      • Я не проверял, позволяет ли перенос необходимых cookies/localStorage/sessionStorage обойти дополнительные меры безопасности входа, когда форум не имеет тестов на уникальность браузера для предотвращения входа пользователей, или также ли сломаны какие-либо функции для вошедших в систему пользователей.

Возможно, достаточно заключить «глобальную переменную» в «анонимную функцию», невидимую для скриптлетов/спиннетов широкополосных блокировщиков контента, когда идея динамического имени, например, меняющегося каждые 24 часа на уровне CDN, слишком дорога для инфраструктуры.

Другие форумы, которые внедрили простой просмотр в формате HTML вместо более длительного переходного периода с менее агрессивной предупреждающей панелью под навигацией заголовка, — это forum.fxsound.com, где apow/set-constant также пока работают.