Как стать автором
Обновить

Режем ещё больше рекламы и фингерпринтинга в браузере Brave

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.1K
Всего голосов 10: ↑9 и ↓1+12
Комментарии34

Комментарии 34

с пк и моб brave выдаёт уникальный канванс.
user-agent тоже крайне редкий.

это сделано специально, см наши статьи https://habr.com/ru/company/brave/blog/587968/ и https://habr.com/ru/company/brave/blog/664052/
Отпечаток канваса будет разный у каждого сайта, таким образом его нельзя использовать для межсайтовой слежки.

User-agent это вымирающая технология, эта строка сейчас заморожена во всех браузерах, вместо неё будет Client Hints, которые мы в основном выключаем.

Это тип атак, который продвинутые и мотивированные трекеры могут использовать

Не пора ли уже отказаться от спецтерминологии и перейти на общеупотребимую? Это тип атак, который агрессивные трояны могут использовать. Мне искренне непонятно, почему описывается поведение вредоносов и методы борьбы с ними, но называется это все трекерами, аналитикой, скриптами, попапами и т.п., хотя есть прекрасный обобщающий термин?

Потому что отличительная черта трояна - это его маскировка под нормальное ПО и исполнение на клиенте. Трекеры не скрывают своего предназначения, и могут быть полностью серверными (даже если посчитать, что JS-код это "клиентское" приложение).

Кроме того, троян - это именно вредонос, а трекеры и аналитика (например, гугловское или яндексовое добро) официально не являются малварью.

Трекеры и маскируются под нормально ПО, даже целую легенду имеют: для удобства пользователей, для изучения аудитории, в помощь вебмастеру, тогда как реальная цель - только одна: рекламное профилирование пользователей в интересах оператора. Это и есть вредоносная (для посетителя сайта) активность, а что она "официально" таковой не названа... напомните, кто и кем уполномочен выдавать малвари статус официальной малвари? ;)

Я по-человечески с вами в целом согласен, но по причинам которые уже написал, в статье не буду так переводить :)

О, я не жду, что Вы броситесь грудью на амбразуру корпоративной политики, но кто-то же должен обозначить проблему ;)

Во‑первых, Brave сообщает веб‑скриптам, что размеры вашего экрана приблизительно совпадают с высотой и шириной вашего браузерного окна. Это не позволяет трекерам узнать ваш истинный размер экрана.

Это еще что за ужас?

Вы меняете поведение стандартных js функций?

конечно

На нашем легальном сайте нам нужно бороться с мультиаккаунтингом, который используется для нехороших целей

Получается ваш браузер в данном случает на стороне зла?

Я могу попробовать ответить на ваш вопрос, если вы уточните как определить сторону зла, и как определить принадлежность к ней браузера.

Сторона зла - та, которая хочет обмануть (Сатана - отец лжи, Иоанн 8:44)

Технические [не ожидаемые] особенности вашего браузера помогают обманывать

В нашем случае мультиаккаунтинг это потеря бизнесом денег, а не просто троллинг в соцсетях.

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

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

Встречный вопрос - почему вы интересуетесь злом и потерей денег бизнесом в одном контексте?

Не надо передергивать. Интернет, компьютеры, ваш браузер - это средства коммуникации. Ваша же фича - нечто иное. Она нарушает спецификацию javascript функций. Нормальную работу фронтэнда. Заставляет дополнительно использовать какие-то средства определения клиента. Если бы злоумышленник явно ставил подобные средства анонимизации - это одно. Вы же распространяете это на всех.

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

Встречный вопрос - почему вы интересуетесь злом и потерей денег бизнесом в одном контексте?

Не понимаю, что на что вы тут натягиваете. Любой обман - это зло. В моем частном случае он дает еще и финансовые убытки, то есть подходит под статью УК. Не было бы убытков - не было бы уголовки, была бы только этика.

Тор распространяет детское порно, VPN переводят деньги террористам, Brave - вообще уголовники /sarcasm

А еще они (совместно с VPN) помогают обходить законные санкции. О ужас!

В вашем комментарии ошибка: я вовсе не передёргиваю, я вас троллю, потому что в вашем комментарии содержится совершенно неуместное морализаторство и цитирование библии, и всё это публично под технической статьёй.

Я сообщил вам, что могу попробовать ответить на ваш вопрос, если вы определите сторону зла, вы определили её через обман. Могу повториться, в нашей фиче никакого обмана нет - код её общедоступен, описание опубликовано в статье. Таким образом, наш браузер на стороне зла не находится.

Чтобы вернуть ветку в техническое русло, достойное площадки Хабра, могу я поинтересоваться у вас, какой именно пункт спецификации нарушает то изменение, которое вы процитировали?

Да, действительно, наш браузер возвращает Web Exposed Screen information.

https://w3c.github.io/csswg-drafts/cssom-view/#web-exposed-screen-information

Процитирую это определение, для читателей, которые не будут переходить по ссылке

User agents may choose to hide information about the screen of the output device, in order to protect the user’s privacy.

...
The Web-exposed screen area is one of the following:
* The area of the output device, in CSS pixels.
* The area of the viewport, in CSS pixels.

Таким образом, возвращение размеров вьюпорта вместо размеров физического устроства никак не нарушает спецификацию, зато защищает приватность пользователей.

А разве вы возвращаете размеры вьюпорта?

Судя по тексту, вы возвращаете приблизительное значение. Рандомную величину.

Конечно.

Обратимся к спецификации https://w3c.github.io/csswg-drafts/css2/#viewport①

viewport - a window or other viewing area on the screen

Мы каждому сайту возвращаем значение, которое является размером некоторой "other viewing area on the screen". Это прерогатива браузера, определять что именно у него является viewing area, какой у неё размер, как именно эту область отображать.

А зачем обрезали определение?

User agents for continuous media generally offer users a viewport (a window or other viewing area on the screen) through which users consult a document.

Viewport - это видимая пользователю область веб-страницы, то, что может увидеть пользователь, не прибегая к прокрутке.

Спорить нет смысла. Вы взяли Хромиум, который поддерживает данную спецификацию, и изменили его так, что стандартные javascript функции ведут себя не по спецификации. И написали об этом мелким шрифтом где-то. Вы сами признали, что меняете сами функции, а не изменяете размер экрана.

Прочитайте спеку ещё раз. Там нет ничего про "видимая" или про "прокрутку". Зато там есть слово "other viewing area on the screen".

Есть например две разновидности headless браузера Хромиум. В них вообще нет ничего видимого и никакой прокрутки - они ведут себя не по спецификации?

Ну давайте вы кому-нибудь другому доказывать будете, что viewport - это то, что каждому хочется, и что возвращать в window.screen.width разные значения при одинаково развернутом браузере на одном и том же сайте - это нормально и по спецификации.

  1. viewport - это то, что определено в спеке как viewport, могу в третий раз повторить что это other viewing area on the screen

  2. одному и тому же сайту отдаются одинаковые значения, непонятно почему вы пишете, что они будут разные. Это нормально и по спецификации.

Я думаю, у вас возможно с вашим оппонентном возникло некоторе недопонимание.

Согласно спецификациям, если читать их целиком - viewport, который viewing area on the screen, это та часть экрана, которая отводится непосредственно под рендеринг (отображение) того содержимого, которое в определенный момент времени находится в области этого самого вьюпорта - в области видимости пользователя. Фактически, если мы рассматриваем обычный браузер и экран, или гипотетически, если это оффскрин браузер - не суть важно. Важно то, что непосрдественно на размеры вьюпорта может быть завязана какая-то логика.

Например, я могу использовать из js Viewport API, для динамического позиционирования какого-то элемента. И этот элемент должен рендерится на экране адекватно этому самому вьюпорту.

Браузер TOR, напрмиер, проводя политику деметрикатизации вьюпорта делает вьюпорты фиксированного размера у всех пользователей браузера, просто фактически область рендеринга сайта не занимает всю ширину экрана.

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

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

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

Помимо того, что размеры вьюпорта можно брать из js api, на него завязаны те же единицы измерения в css - vw/vh.

А кстати вот вопрос.
Допустим у меня Brave запущен в оконном режиме в WMR Home (в этом случае посреди ВР-окружения будет просто окошка браузера висеть, для SteamVR есть софт чтобы так делать тоже), разумеется одет ВР-шлем то какое разрешение уйдет? А какое должно?.. Окна? Что-то похожее на разрешение окна? чего то что система считает монитором на котором это запущено(к реальному монитору это запросто может не иметь отношения)? Шлем? Вьюпорта окна спроецированного на шлем? А как обычное приложение получит все кроме разрешения окна?

Легально по законам какой страны?
GDPR или там Российский закон о ПД или CCPA точно соблюдается на 100%?
А ложных детектов не бывает?
Или случаев когда пользователю сначала выписывается бан из-за того что у него в профиле прописано все честно но кто-то там решил что надо всех пользователей определенного пола или там определенного языка или локации оптом забанить а попытки пользователей это обойти — банятся детектами?(последний пример — я вот один сайт который так себя ведет — знаю, и кстати захожу туда в Brave(по другим причинам, не тем что в статье), с VPN, ну и в новом профиле теперь корректной информации… меньше. Да, кто-то скажет что нарушение правил и что действия (якобы) обоснованы а кто-то — что пусть с этими правилами лесом идут в данной ситуации. И сайтов с похожими проблемами — более одного).

Не нашёл как включить первый пункт через настройки. Погугли в нашёл эту ссылку:

brave://adblock

это больше про мобильные, на них фича должна включиться по умолчанию. У вас само не заработало?

Чекбокс у этого пункта не был включён.

на мобильном? можете содержимое brave://version мне прислать?

Очень круто! Как я вижу, Brave все еще остается самым приватным браузером на андроиде.

Правильно ли я понимаю, что когда хром перейдет на Blink на iOS, Брейв перейдет аналогичным образом?

Спасибо!

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий