Comments 49
А еще благодоря этой библиотеке можно делать нехорошие вещи, например, пока пользователь не видит, перезагрузить содержимое таба, чтобы страница выглядила как PayPal. Пользуйтесь NoScript…
майнер бит-бабок запустить, например… Ещё идеи? :-)
Что мешает сразу рендерить фишинговую страницу? Что-то юзкейса не понял…
ну как это… допустим ты читал новости на сайте N, и отправлял бабло в PayPal'e, затем тебе пришло письмо, пока ты его читал — страничка на сайте N подменилась, подменилась и иконка, и ты, ничего не подозревая возвращаешься в «псевдо» PayPal и как ни в чем ни бывало пытаешься снова залогиниться, ан-нет, не получится, ведь это ненастоящий PayPal :) примерно это имел ввиду Scorpil в своем сообщении выше.
Сертификат тоже «подменился»? :-) Хотя да, если с этой точки зрения рассматривать, то атака возможна… очень специфическая и сомнительная.
ну о каком еще сертификате может идти речь, если вы 2 минуты назад были на пайпале, и почитав письмо, вернулись на него. Какой еще сертификат, что же вы смешите?) да вы на строку браузера наврядли взглянете то, не говоря уже о составе страницы, и текущем протоколе (http/https).
Вы не вернётесь — вы читали в другом табе же. Вам нужно вручную переключиться на другой таб. Тем более надо очень точно подгадать момент.
… И это уже будет именно психологический фактор, т.к. фактически вы и не были знакомы ранее с такими способами обмана, и не подозревали о таком. Ответьте мне на вопрос пожалуйста, смОтрите ли вы на строку браузера, выбирая в списке табов лишь нужный таб по иконке/заголовку и далее после клика — по содержимому страницы?
небольшое уточнение: "… смОтрите ли вы на адресную строку браузера..."
Учитывая то, что строка находится сразу под табами — на нее тяжело не взглянуть, а уж тем более не заметить то, что url разительно отличается от paypal.com. Плюс сертификат — не проверить есть ssl или нет перед транзакцией это просто тупо. Хотя наверняка есть люди которые этого не делают, не спорю :-)
Кстати, как к этому относятся концепт-дизайнеры Chrome и FF? Ведь, они вообще собираются убрать адресную строку из браузера.
Единственное нарушение безопасности, которое сейчас выглядит адекватным — это сбор большей статистики, о том, как вы пользуетесь сайтом. Плюс, иногда можно понять, что это один и тот же пользователь просматривает два сайта — если он будете переключать из одного сайта в другой (но есть более простые способы это узнать) — в общем проблем с безопасностью я тут пока не вижу.
«Единственное нарушение безопасности, которое сейчас выглядит адекватным — это сбор большей статистики, о том, как вы пользуетесь сайтом»
То что многие веб-разработчики и сами иногда не прочь поставить всякие лайвинторнеты, яндекс-метриксы, и прочие счетчики на свой сайт, это ничего, а то что какой-то сайт тупо собирает вашу активность/неактивность в данный момент времени — это угроза безопасности?
Не согласен с вами. Тот же лайвинтернет соберет о Вас гораздо больше инфы, чем статистика активности/неактивности, так что не вижу повода беспокиться.
То что многие веб-разработчики и сами иногда не прочь поставить всякие лайвинторнеты, яндекс-метриксы, и прочие счетчики на свой сайт, это ничего, а то что какой-то сайт тупо собирает вашу активность/неактивность в данный момент времени — это угроза безопасности?
Не согласен с вами. Тот же лайвинтернет соберет о Вас гораздо больше инфы, чем статистика активности/неактивности, так что не вижу повода беспокиться.
Новопассит поможет тоже!
Visibility.onVisible имеет тот же порядок аргументов что и setInterval (функция, интервал), а Visibility.every — прямо противоположный.
Злые вы, марсиане.
Злые вы, марсиане.
Удобная вещь, можно четко определить читает ли твой контент пользователь или нет.
для того, чтобы анимации не жраил процессор нужно пользоваться requestAnimationFrame, но для других вещей — это очень крутой API, спасибо :-)
Прощай, заработок с popUnder'ов!
Не знаю было ли так задумано или нет или может это не входит в возможности API, но при переключении на другое окно (нажал на уведомление из thunderbird во время просмотра видео) оно не понимает, что я больше не вижу этот таб
Теперь всякие летитбиты и депозиты будут следить за тем, смотришь ли ты на страницу, и если нет, то останавливать счетчик…
Не просто будут. Уже следят! Я сегодня наткнулся на такой файлопомойный сайт. Пока понял это — минут 10 прошло. Я ввожу капчу, запускается счетчик, я сваливаю. Через минуту захожу — никаких ссылок на скачку нет. Думаю, черт, глюк, ввожу капчу снова. Снова сваливаю. Фэйл повторяется. Потом я стал переключаться туда-сюда и заметил, что счетчик-то не бежит, когда я в другой закладке. Пришлось сидеть, ждать. Вот ведь грустно-то как :)
Да, это ужасная тёмная сторона этой технологии. В слабой попытке защититься хочу сказать, что есть хаки, определяющие что вы в другой табе и без Page Visibility API. Например хак MozVisibility использует то, что браузеры в фоновых табах запускают steInterval не чаще раза в секунду.
Это неправильное API (впрочем, в HTML/CSS/JS столько недочетов и недоработок, что это уже мелочи). По идее, при сворачивании окна/переключении с таба браузер должен по умолчанию полностью его останавливать, чтобы не расходовать ресурсы. Если какому-то табу нужно быть активным и в фоне, он должен использовать какие-нибудь специальные функции для этого, чтобы попроить браузер не отключать его.
А такой подход — отключать анимацию и вычисления при уходе с таба по событию — работать не будет, так как 95% разработчиков просто не будут с этим заморачиваться.
И, кстати, подобные штуки давно уже используются (вроде бы) в Гуглокартах и вконтакте — они определяют активность пользователя по событиям мыши и клавиатуры и как-то на ее отсутствие реагируют.
А такой подход — отключать анимацию и вычисления при уходе с таба по событию — работать не будет, так как 95% разработчиков просто не будут с этим заморачиваться.
И, кстати, подобные штуки давно уже используются (вроде бы) в Гуглокартах и вконтакте — они определяют активность пользователя по событиям мыши и клавиатуры и как-то на ее отсутствие реагируют.
Ваш метод слишком жесток — достаточно просто сильно ограничивать фоновые табы. Например, все нормальные браузеры сейчас запускаю
setInterval
-код минимум раз в секунду.Впрочем, Page Visibility API — это не только об ограничении ресурсов. Это в первую очередь об юзабилити (вот бы YouTube начал его поддерживать и не включал бы видео, если оно открывается сразу в фоновом табе).
<html>
<head>
<title>тайтл</title>
<script>
window.onblur = function () {document.title='документ неактивен'}
window.onfocus = function () {document.title='документ снова активен'}
</script>
</head>
<body>
<img src="http://www.google.com.ua/images/nav_logo83.png">
</body>
</html>
http://ssms-ka.narod2.ru/index_onblur.html
Прекрасный хак!
А он будет работать, если в body будет форма и сложное оформление?
Вот с формами
http://ssms-ka.narod2.ru/Habrahabr.htm
http://ssms-ka.narod2.ru/Habrahabr.htm
Хотя он становится неактивным, даже если окно браузера просто теряет фокус, хотя сайт всё ещё видим пользователю.
причем способ стар как мир и успешно применяется.
Метод определения открытого таба или видимого участка страницы существовал давно, ещё при IE5-6 и для всех браузеров. Но решение было некрасивое — нагружать периодически браузер анимацией на 100% загрузки процессора и сравнивать время. За пределами окна и при закрытом табе время было больше для той же анимации. И если 2 таба решат действовать таким способом, показания будут влиять друг на друга. Из-за некрасивости метода никогда не было желания довести его до конца, до некоторой утилиты. Но счётчикам на странице некрасивость — не помеха; странно, что они только сейчас начинают внедрять детектирование открытого таба.
ради высшей справедливости, реализовать симулятор кота Шрёдингера в браузере нельзя, ведь сам опыт показывает парадокс неопределенности состояния элементарной частицы. только имитатор. (вот если бы подключить к компьютеру какой-нибудь USB-счетчик Гейгера то будет совсем другое дело!)
а симулятор подбрасывания монетки — можно.
а симулятор подбрасывания монетки — можно.
Например, можно проверять новые сообщения каждую минуту, когда пользователь открыл сайт (то есть ему это важно). А когда пользователь не видит сайт (читает другую страницу) будем экономить его трафик и проверять почту каждые 5 минут:Я могу уйти со страницы (вкладки), при этом для меня важность получения сообщения или почты не уменьшится.
У меня в хроме не работает test/integration.html: выдаёт hidden, и потом уже не меняет, куда бы я ни сворачивал/тыкал/переключал.
Пробовал сам написать на голом API — тоже ничего не работает.
Видимо сломали.
Возвращаюсь к window.focus и window.blur.
Пробовал сам написать на голом API — тоже ничего не работает.
Видимо сломали.
Возвращаюсь к window.focus и window.blur.
Добрый день. Я прямо сейчас проверим в свежей бете Хрома (23.0.1271.26) — всё работает.
Если бы Page Visibility API был бы отключён, то страница выдавала бы «visible», а не «hidden» (по-умолчанию страница видима), так что я думаю, что API работает, просто посредине процесса происходит какая-то ошибка.
Вы можете посмотреть лог (Ctrl + Shift + J) — нет ли там сообщения об ошибке.
Если бы Page Visibility API был бы отключён, то страница выдавала бы «visible», а не «hidden» (по-умолчанию страница видима), так что я думаю, что API работает, просто посредине процесса происходит какая-то ошибка.
Вы можете посмотреть лог (Ctrl + Shift + J) — нет ли там сообщения об ошибке.
Sign up to leave a comment.
Page Visibility API и Visibility.js