Отслеживание направления взгляда пользователя в браузере
Меня всегда напрягало то, как навязчиво Google AdSense подсовывал контекстную рекламу в зависимости от моих старых запросов в поисковике. Вроде бы и времени с момента поиска прошло достаточно много, да и куки и кеш браузера чистились не раз, а реклама оставалась. Как же они продолжали отслеживать меня? Оказывается, способов для этого предостаточно.
Небольшое предисловие
Идентификация, отслеживание пользователя или попросту веб-трекинг подразумевает под собой расчет и установку уникального идентификатора для каждого браузера, посещающего определенный сайт. Вообще, изначально это не задумывалось каким-то вселенским злом и, как и все, имеет обратную сторону, то есть призвано приносить пользу. Например, позволить владельцам сайта отличить обычных пользователей от ботов или же предоставить возможность хранить предпочтения пользователей и применять их при последующем визите. Но в то же самое время данная возможность очень пришлась по душе рекламной индустрии. Как ты прекрасно знаешь, куки — один из самых популярных способов идентификации пользователей. И активно применяться в рекламной индустрии они начали аж с середины девяностых годов.
Явные идентификаторы
Данный подход довольно очевиден, все, что требуется, — сохранить на стороне пользователя какой-то долгоживущий идентификатор, который можно запрашивать при последующем посещении ресурса. Современные браузеры предоставляют достаточно способов выполнить это прозрачно для пользователя. Прежде всего это старые добрые куки. Затем особенности некоторых плагинов, близкие по функционалу к кукам, например Local Shared Objects во флеше или Isolated Storage в силверлайте. HTML5 также включает в себя несколько механизмов хранения на стороне клиента, в том числе localStorage , File и IndexedDB API . Кроме этих мест, уникальные маркеры можно также хранить в кешированных ресурсах локальной машины или метаданных кеша ( Last-Modified , ETag ). Помимо этого, можно идентифицировать пользователя по отпечаткам, полученным из Origin Bound сертификатов, сгенерированных браузером для SSL-соединений, по данным, содержащимся в SDCH-словарях, и метаданным этих словарей. Одним словом — возможностей полно.
Cookies
Local Shared Objects
Удаление данных из localStorage в Firefox
Изолированное хранилище Silverlight
Программная платформа Silverlight имеет довольно много общего с Adobe Flash. Так, аналогом флешевого Local Shared Objects служит механизм под названием Isolated Storage . Правда, в отличие от флеша настройки приватности тут никак не завязаны с браузером, поэтому даже в случае полной очистки куков и кеша браузера данные, сохраненные в Isolated Storage , все равно останутся. Но еще интересней, что хранилище оказывается общим для всех окон браузера (кроме открытых в режиме «Инкогнито») и всех профилей, установленных на одной машине. Как и в LSO, с технической точки зрения здесь нет каких-либо препятствий для хранения идентификаторов сессии. Тем не менее, учитывая, что достучаться до этого механизма через настройки браузера пока нельзя, он не получил такого широкого распространения в качестве хранилища для уникальных идентификаторов.
Где искать изолированное хранилище Silverlight
HTML5 и хранение данных на клиенте
Настройка локального хранилища для Flash Player
Кешированные объекты
ETag и Last-Modified
Сервер возвращает клиенту ETag
HTML5 AppCache
Application Cache позволяет задавать, какая часть сайта должна быть сохранена на диске и быть доступна, даже если пользователь находится офлайн. Управляется все с помощью манифестов, которые задают правила для хранения и извлечения элементов кеша. Подобно традиционному механизму кеширования, AppCache тоже позволяет хранить уникальные, зависящие от пользователя данные — как внутри самого манифеста, так и внутри ресурсов, которые сохраняются на неопределенный срок (в отличие от обычного кеша, ресурсы из которого удаляются по истечении какого-то времени). AppCache занимает промежуточное значение между механизмами хранения данных в HTML5 и обычным кешем браузера. В некоторых браузерах он очищается при удалении куков и данных сайта, в других только при удалении истории просмотра и всех кешированных документов.
SDCH-словари
SDCH — это разработанный Google алгоритм компрессии, который основывается на использовании предоставляемых сервером словарей и позволяет достичь более высокого уровня сжатия, чем Gzip или deflate. Дело в том, что в обычной жизни веб-сервер отдает слишком много повторяющейся информации — хидеры/футеры страниц, встроенный JavaScript/CSS и так далее. В данном подходе клиент получает с сервера файл словаря, содержащий строки, которые могут появиться в последующих ответах (те же хидеры/футеры/JS/CSS). После чего сервер может просто ссылаться на эти элементы внутри словаря, а клиент будет самостоятельно на их основе собирать страницу. Как ты понимаешь, эти словари можно с легкостью использовать и для хранения уникальных идентификаторов, которые можно поместить как в ID словарей, возвращаемые клиентом серверу в заголовке Avail-Dictionary , так и непосредственно в сам контент. И потом использовать подобно как и в случае с обычным кешем браузера.
Прочие механизмы хранения
Протоколы
Помимо механизмов, связанных с кешированием, использованием JS и разных плагинов, в современных браузерах есть еще несколько сетевых фич, позволяющих хранить и извлекать уникальные идентификаторы.
Характеристики машины
Все рассмотренные до этого способы основывались на том, что пользователю устанавливался какой-то уникальный идентификатор, который отправлялся серверу при последующих запросах. Есть другой, менее очевидный подход к отслеживанию пользователей, полагающийся на запрос или измерение характеристик клиентской машины. Поодиночке каждая полученная характеристика представляет собой лишь несколько бит информации, но если объединить несколько, то они смогут уникально идентифицировать любой компьютер в интернете. Помимо того что такую слежку гораздо сложнее распознать и предотвратить, эта техника позволит идентифицировать пользователя, сидящего под разными браузерами или использующего приватный режим.
«Отпечатки» браузера
Наиболее простой подход к трекингу — это построение идентификаторов путем объединения набора параметров, доступных в среде браузера, каждый из которых по отдельности не представляет никакого интереса, но совместно они образуют уникальное для каждой машины значение:
Сетевые «отпечатки»
Еще ряд признаков кроется в архитектуре локальной сети и настройке сетевых протоколов. Такие знаки будут характерны для всех браузеров, установленных на клиентской машине, и их нельзя просто скрыть с помощью настроек приватности или каких-то security-утилит. Они включают в себя:
Поведенческий анализ и привычки
Еще один вариант — взглянуть в сторону характеристик, которые привязаны не к ПК, а скорее к конечному пользователю, такие как региональные настройки и поведение. Такой способ опять же позволит идентифицировать клиентов между различными сессиями браузера, профилями и в случае приватного просмотра. Делать выводы можно на основании следующих данных, которые всегда доступны для изучения:
И это лишь очевидные варианты, которые лежат на поверхности. Если копнуть глубже — можно придумать еще.
Подытожим
Как видишь, на практике существует большое число различных способов для трекинга пользователя. Какие-то из них являются плодом ошибок в реализации или упущений и теоретически могут быть исправлены. Другие практически невозможно искоренить без полного изменения принципов работы компьютерных сетей, веб-приложений, браузеров. Каким-то техникам можно противодействовать — чистить кеш, куки и прочие места, где могут храниться уникальные идентификаторы. Другие работают абсолютно незаметно для пользователя, и защититься от них вряд ли получится. Поэтому самое главное — путешествуя по Сети даже в приватном режиме просмотра, помнить, что твои перемещения все равно могут отследить.
Автор статьи, перевод которой мы публикуем, предлагает поговорить о решении задач из сферы компьютерного зрения исключительно средствами веб-браузера. Решить подобную задачу не так уж и трудно благодаря JavaScript-библиотеке TensorFlow. Вместо того, чтобы обучать собственную модель и предлагать её пользователям в составе готового продукта, мы дадим им возможность самостоятельно собрать данные и обучить модель прямо в браузере, на собственном компьютере. При таком подходе серверная обработка данных совершенно не нужна.
Испытать то, созданию чего посвящён этот материал, можно здесь. Вам для этого понадобится современный браузер, веб-камера и мышь. Вот исходный код проекта. Он не рассчитан на работу на мобильных устройствах, автор материала говорит, что у него не было времени на соответствующие доработки. Кроме того, он отмечает, что рассматриваемая тут задача усложнится в том случае, если придётся обрабатывать видеопоток с движущейся камеры.
Давайте, используя технологии машинного обучения, выясним, куда именно смотрит пользователь, когда разглядывает веб-страницу. Сделаем это, наблюдая за его глазами с помощью веб-камеры.
В браузере очень легко получить доступ к веб-камере. Если предположить, что в качестве входных данных для нейронной сети будет использоваться всё изображение с камеры, то можно сказать, что оно для этих целей слишком велико. Системе придётся проделать большую работу только для того, чтобы определить то место на изображении, где находятся глаза. Такой подход может хорошо показать себя в том случае, если речь идёт о модели, которую разработчик обучает самостоятельно и развёртывает на сервере, однако если мы говорим об обучении и использовании модели в браузере — это уже чересчур.
Для того чтобы облегчить задачу сети, мы можем предоставить ей лишь часть изображения — ту, которая содержит глаза пользователя и небольшую область вокруг них. Эту область, представляющую собой прямоугольник, окружающий глаза, можно выявить с помощью сторонней библиотеки. Поэтому первая часть нашей работы выглядит так:
Для обнаружения лица на изображении я воспользовался библиотекой, которая называется clmtrackr. Она не идеальна, но отличается маленькими размерами, хорошей производительностью, и, в целом, достойно справляется со своей задачей.
Если в качестве входа для простой свёрточной нейронной сети используется маленькое, но с умом подобранное изображение, сеть, без особых проблем, сможет обучиться. Вот как выглядит этот процесс:
Здесь будет описана полностью рабочая минимальная реализации рассмотренной в этом разделе идеи. Проект, код которого находится в этом репозитории, обладает множеством дополнительных возможностей.
Подготовка
Для начала загрузим clmtrackr.js из соответствующего репозитория. Работу начнём с пустого HTML-файла, в котором импортируются jQuery, TensorFlow.js, clmtrackr.js и файл main.js с нашим кодом, над которым мы будем работать немного позже:
Получение видеопотока с веб-камеры
Для того чтобы активировать веб-камеру и вывести видеопоток на страницу нам понадобится получить разрешение пользователя. Здесь я не привожу код, решающий проблемы совместимости проекта с различными браузерами. Мы будем исходить из предположения, в соответствии с которым наши пользователи работают в интернете с применением последней версии Google Chrome.
Добавим в HTML-файл следующий код. Он должен располагаться в пределах тега <body> , но выше тегов <script> :
Теперь поработаем с файлом main.js :
Попробуйте этот код у себя. Когда вы откроете страницу, браузер должен запросить разрешение, а затем на экране появится картинка с веб-камеры.
Позже мы расширим код функции onStreaming() .
Поиск лица
Теперь давайте воспользуемся библиотекой clmtrackr.js для поиска лица на видео. Для начала инициализируем систему слежения за лицом, добавив следующий код после const video = . :
Теперь, в функции onStreaming() , мы подключаем систему поиска лица, добавляя туда следующую команду:
Это всё, что нам нужно. Теперь система сможет распознать лицо в видеопотоке.
Не верите? Давайте, для того, чтобы вы в этом убедились, нарисуем вокруг лица «маску».
Для того чтобы это сделать, нам нужно вывести изображение поверх элемента, ответственного за показ видео. Рисовать что-либо на HTML-страницах можно с помощью тега <canvas> . Поэтому создадим такой элемент, наложив его на элемент, выводящий видео. В этом нам поможет следующий код, который надо добавить в HTML-файл под уже имеющимся там элементом <video> :
Если хотите — можете переместить встроенный стиль в отдельный CSS-файл.
Тут мы добавили на страницу элемент <canvas> того же размера, что и элемент <video> . То, что элементы будут расположены в одной и той же позиции, обеспечивают использованные здесь стили.
Теперь, каждый раз, когда браузер выводит очередной кадр видео, мы собираемся рисовать что-то на элементе <canvas> . Выполнение какого-либо кода при выводе каждого кадра выполняется с помощью механизма requestAnimationLoop() . Прежде чем мы выведем что-либо в элемент <canvas> , нам нужно удалить с него то, что было на нём раньше, очистив его. Затем мы можем предложить clmtrackr выполнять вывод графики прямо на элемент <canvas> .
Вот код, реализующий то, о чём мы только что говорили. Добавить его надо ниже команды ctrack.init() :
Теперь вызовем функцию trackingLoop() в функции onStreaming() сразу после ctrack.start() . Эта функция будет сама планировать собственный перезапуск в каждом кадре.
Обновите страницу и посмотрите в веб-камеру. Вы должны увидеть зелёную «маску» вокруг лица в окне видео. Иногда для того чтобы система правильно распознала лицо, нужно немного подвигать головой в кадре.
Результаты распознавания лица
Выявление области изображения, содержащей глаза
Теперь нам нужно обнаружить прямоугольную область изображения, в которой находятся глаза, и поместить её на отдельный элемент <canvas> .
К счастью, cmltracker даёт нам не только сведения о расположении лица, но и 70 контрольных точек. Если взглянуть на документацию к cmltracker, можно выбрать именно те контрольные точки, которые нам нужны.
Контрольные точки
Решим, что глаза — это прямоугольная часть изображения, границы которой касаются точек 23, 28, 24 и 26, расширенная на 5 пикселей в каждом направлении. Этот прямоугольник должен включать в себя всё, что для нас важно, если только пользователь не слишком сильно наклоняет голову.
Теперь, прежде чем мы сможем воспользоваться этим фрагментом изображения, нам нужен ещё один элемент <canvas> для его вывода. Его размеры будут равны 50x25 пикселей. Прямоугольник с глазами будет вписан в этот элемент. Небольшие деформации изображения — это не проблема.
Добавьте в HTML-файл этот код, описывающий элемент <canvas> , в который попадёт та часть изображения, на которой имеются глаза:
Следующая функция вернёт координаты x и y , а также ширину и высоту прямоугольника, окружающего глаза. Она, в качестве входных данных, принимает массив positions , полученный от clmtrackr. Обратите внимание на то, что каждая координата, полученная от clmtrackr, имеет компоненты x и y . Эту функцию надо добавить в main.js :
Теперь, в каждом кадре, мы собираемся извлекать из видеопотока прямоугольник с глазами, обводить его красной линией на элементе <canvas> , который наложен на элемент <video> , а затем копировать его в новый элемент <canvas> . Обратите внимание на то, что для того, чтобы правильно выявить нужную нам область, мы будем рассчитывать показатели resizeFactorX и resizeFactorY .
Замените следующим кодом блок if в функции trackingLoop() :
Перезагрузив теперь страницу, вы должны увидеть красный прямоугольник вокруг глаз, а то, что содержит этот прямоугольник — в соответствующем элементе <canvas> . Если ваши глаза больше моих — поэкспериментируйте с функцией getEyeRectangle .
Элемент <canvas>, выводящий прямоугольник, содержащий изображение глаз пользователя
Сбор данных
Существует много способов сбора данных. Я решил использовать информацию, которую можно получить от мыши и клавиатуры. В нашем проекте сбор данных выглядит так.
Пользователь перемещает курсор по странице и следит за ним глазами, нажимая на клавишу Пробел на клавиатуре каждый раз, когда программа должна записать очередной образец. При таком подходе несложно быстро собрать большой набор данных для обучения модели.
▍Отслеживание перемещений мыши
Для того чтобы узнать, где именно на веб-странице расположен указатель мыши, нам понадобится обработчик события document.onmousemove . Наша функция, кроме того, нормализует координаты таким образом, чтобы они укладывались в диапазон [-1, 1]:
▍Захват изображений
Для захвата изображения, выводимого элементом <canvas> и сохранения его в виде тензора, TensorFlow.js предлагает вспомогательную функцию tf.fromPixels() . Используем её для сохранения и последующей нормализации изображения с элемента <canvas> , выводящего прямоугольник, содержащий глаза пользователя:
Обратите внимание на то, что функция tf.tidy() используется для того, чтобы навести порядок после завершения работы.
Мы могли бы просто сохранить все образцы в одной большой обучающей выборке, однако в машинном обучении важно проверять качество обучения модели. Именно поэтому нам надо сохранить некоторые образцы в отдельной контрольной выборке. После этого мы можем проверить поведение модели на новых для неё данных и узнать, не произошло ли чрезмерного обучения модели. Для этой цели 20% от общего количества образцов включены в контрольную выборку.
Вот код, который используется для сбора данных и формирования выборок:
И, наконец, нам надо привязать эту функцию к клавише Пробел :
Теперь каждый раз, когда нажимают на клавишу Пробел , изображение глаз и координаты указателя мыши добавляются в один из наборов данных.
Обучение модели
Создадим простую свёрточную нейронную сеть. TensorFlow.js предоставляет для этой цели API, напоминающее Keras. У сети должен быть слой conv2d , слой maxPooling2d , и, наконец, слой dense c двумя выходными значениями (они представляют экранные координаты). Попутно я добавил в сеть, в качестве регуляризатора, слой dropout , и слой flatten для того, чтобы преобразовать двухмерные данные в одномерные. Обучение сети выполняется с помощью оптимизатора Adam.
Обратите внимание на то, что я остановился на использованных здесь параметрах сети после экспериментов на моём MacBook Air. Вы вполне можете подобрать собственную конфигурацию модели.
Прежде чем приступать к обучению сети, мы задаём фиксированное количество эпох и переменный размер пакета (так как мы, возможно, будем работать с очень маленькими наборами данных).
Теперь добавим на страницу кнопку для запуска обучения. Этот код идёт в HTML-файл:
Этот код надо добавить в JS-файл:
Куда смотрит пользователь?
Теперь, когда мы можем собирать данные и подготовили модель, можно начать предсказывать место на странице, куда смотрит пользователь. Укажем на это место с помощью зелёного кружка, который перемещается по экрану.
Сначала добавим на страницу кружок:
Для того чтобы перемещать его по странице, мы периодически передаём текущее изображение глаз нейронной сети и задаём ей вопрос о том, куда смотрит пользователь. Модель в ответ выдаёт две координаты, по которым должен быть перемещён кружок:
Я установил интервал на 100 миллисекунд. Если ваш компьютер не такой мощный, как мой, возможно, вы решите его увеличить.
Итоги
Теперь у нас готово всё, что нужно для реализации идеи, изложенной в самом начале этого материала. Испытайте то, что у нас получилось. Подвигайте курсором мыши, следя за ним глазами, и понажимайте клавишу Пробел. Потом нажмите кнопку запуска обучения.
Соберите ещё данных, нажмите кнопку ещё раз. Через некоторое время зелёный кружок начнёт передвигаться по экрану вслед за вашим взглядом. Поначалу он будет не особенно хорошо попадать в то место, куда вы смотрите, но, начиная с примерно 50 собранных образцов, после нескольких этапов обучения, и если вам будет сопутствовать удача, он будет довольно точно перемещаться в ту точку страницы, на которую вы смотрите. Полный код разобранного в этом материале примера можно найти здесь.
Хотя то, что у нас получилось, уже выглядит весьма интересно, тут ещё можно сделать множество улучшений. Что если пользователь двигает головой или меняет положение перед камерой? Нашему проекту не помешали бы возможности, касающиеся подбора размера, позиции и угла расположения прямоугольника, ограничивающего область изображения, в которой находятся глаза. На самом деле, довольно много дополнительных возможностей реализовано в полной версии рассмотренного здесь примера. Вот некоторые из них:
Задача отслеживания взгляда пользователя является частным случаем более общей задачи оценки положения.
Для того чтобы облегчить задачу сети, мы можем предоставить ей лишь часть изображения — ту, которая содержит глаза пользователя
Если в качестве входа для простой свёрточной нейронной сети используется маленькое, но с умом подобранное изображение, сеть, без особых проблем, сможет обучиться.
1. Подготовка
Загрузка библиотек, подготовка пустого HTML-документа с которым будем работать.
2. Получение видеопотока с веб-камеры
Запрашиваем разрешение пользователя на активацию веб-камеры. Начинаем получать видео с камеры и создаем функции контроля за потоком.
3. Поиск лица
Используем библиотеку clmtrackr.js для поиска лица на видео. Для начала инициализируем систему слежения за лицом.
Теперь, в функции onStreaming() , подключаем систему поиска лица, добавляя туда следующую команду: ctrack.start(video); Теперь, каждый раз, когда браузер выводит очередной кадр видео, мы собираемся рисовать что-то на элементе <canvas>. Выполнение какого-либо кода при выводе каждого кадра выполняется с помощью механизма requestAnimationLoop() . Теперь вызовем функцию trackingLoop() в функции onStreaming() сразу после ctrack.start() . Эта функция будет сама планировать собственный перезапуск в каждом кадре.
4. Выявление области изображения, содержащей глаза
Следующая функция вернёт координаты x и y, а также ширину и высоту прямоугольника, окружающего глаза. Она, в качестве входных данных, принимает массив positions, полученный от clmtrackr. Обратите внимание на то, что каждая координата, полученная от clmtrackr, имеет компоненты x и y.
Теперь, в каждом кадре, мы собираемся извлекать из видеопотока прямоугольник с глазами, обводить его красной линией на элементе <canvas>, который наложен на элемент <video>, а затем копировать его в новый элемент <canvas>.
5. Сбор данных
Пользователь перемещает курсор по странице и следит за ним глазами, нажимая на клавишу Пробел на клавиатуре каждый раз, когда программа должна записать очередной образец. При таком подходе несложно быстро собрать большой набор данных для обучения модели.
6.Отслеживание перемещений мыши
Для того чтобы узнать, где именно на веб-странице расположен указатель мыши, нам понадобится обработчик события document.onmousemove . Функция нормализует координаты таким образом, чтобы они укладывались в диапазон [-1, 1].
7. Захват изображения
Для захвата изображения, выводимого элементом <canvas> и сохранения его в виде тензора, TensorFlow.js предлагает вспомогательную функцию tf.fromPixels() . Используем её для сохранения и последующей нормализации изображения.
Код который собирает данные и формирует выборки:
Привяжем данную функцию к какой-нибудь клавише, например пробел.
8. Обучение модели
Создадим простую свёрточную нейронную сеть. TensorFlow.js предоставляет для этой цели API, напоминающее Keras. У сети есть слой conv2d, слой maxPooling2d, и слой dense c двумя выходными значениями (они представляют экранные координаты), в качестве регуляризатора, слой dropout, и слой flatten для того, чтобы преобразовать двухмерные данные в одномерные. Обучение сети выполняется с помощью оптимизатора Adam.
Также прежде чем приступать к обучению сети, зададим фиксированное количество эпох и переменный размер пакета (так как мы, возможно, будем работать с очень маленькими наборами данных).
Теперь добавим на страницу кнопку для запуска обучения. Этот код идёт в HTML-файл:
Этот код добавляем в JS-файл:
9. Предсказываем куда смотрит пользователь.
Теперь, когда мы можем собирать данные и подготовили модель, можно начать предсказывать место на странице, куда смотрит пользователь. Укажем на это место с помощью зелёного кружка, который перемещается по экрану.
Сначала добавим на страницу кружок:
Для того чтобы перемещать его по странице, мы периодически передаём текущее изображение глаз нейронной сети и задаём ей вопрос о том, куда смотрит пользователь. Модель в ответ выдаёт две координаты, по которым должен быть перемещён кружок:
Функция взгляда: культурное и историческое значение в обществе
Манера смотреть имеет большое значение во время общения. Но у представителей разных культур есть свой этикет относительно допустимости и уместности прямого контакта глазами. Так, в странах Западной Европы принято смотреть долго и пристально, выражая доверие и заинтересованности в разговоре. Похожая традиция распространена в России, других странах СНГ.
Жители Дальнего Востока расценивают попытку посмотреть в глаза как неуважение и даже угрозу. Особенно сильно это выражено в Японии: во время разговора японцы специально смотрят в сторону, чтобы случайно не посмотреть на собеседника. Изучая культуру взглядов, следует учитывать национальные особенности, иначе можно неправильно расценить намерения, спровоцировать ссору.
Что означает взгляд мужчины
На инстинктивном уровне долгий взгляд в глаза от потенциального соперника воспринимается как вызов и проявление агрессии. В мире животных такой взгляд всегда предшествует драке. Часто родители учат детей не смотреть в глаза чужим и бездомным собакам, потому что животное, которое не знает, чего ждать от ребенка, может расценить взгляд как враждебный.
Пристальный взгляд мужчины в глаза мужчине может означать:
- Вызов или ответ на вызов.
Именно глаза первыми сообщают о желании поссориться: тяжелый, наглый и враждебный взгляд может напугать соперника или спровоцировать его на взаимную неприязнь. - Оценку. Пристальный взгляд может быть изучающим или испытующим.
Разница в том, что изучают человека незаметно, а испытывают нарочито и прямо, в том числе через конфликт. По тому, как оппонент реагирует на пристальный взгляд, можно многое сказать о его характере.
Пристальный взгляд девушки на парня принято считать проявлением заинтересованности. Отчасти это верно, т. к. чтобы во что-то или в кого-то всматриваться, необходим хоть какой-то интерес, но какой именно – это еще большой вопрос. Не стоит интерпретировать этот взгляд как симпатию, если на то не указывают какие-либо сопутствующие признаки.
Мужчине более свойственно пристально и долго смотреть в глаза женщинам, которым нравится он сам, в т. ч. женщинам, с которыми его связывают тесные отношения. У бытовых хамов в эту категорию вписываются сразу все женщины, вот почему наглые взгляды, как и сомнительные фразы для знакомства с девушкой – их отличительная черта.
Пристальный взгляд в глаза, не моргая, может быть признаком очень сильных чувств, которые сложно скрывать и контролировать. Здесь мужчине уже не до осторожностей, его взгляд почти кричащий, в нем умещается все, что не удается уместить в слова и жесты.
О чем говорит размер зрачков: что скрывает собеседник
Во время разговора размер зрачков может резко измениться. Это связано с эмоциональным отношением к собеседнику или предмету разговора. Расширенные зрачки — признак сильного эмоционального подъема: партнер смотрит на то, что ему нравится. Так смотрят влюбленные на предмет своей страсти или дети на желанную игрушку. Суженные зрачки — признак отстраненности, эмоциональной холодности.
Оценивая размер зрачков, важно учитывать сторонние факторы. Так, при ярком освещении зрачки сильно сужаются, а в полутьме расширяются. На ширину зрачков могут повлиять, некоторые заболевания, например, повышенное внутричерепное давление
Создание персонализированного суперплацебо для различных задач.
Суперплацебо – уже устоявшийся термин, означающий (кроме всего прочего) открытое плацебо. Так, например, вам открыто, без обмана, дают таблетки и говорят, что это плацебо, и оно помогает против депрессии или артрита. Вы его принимаете, и симптомы депрессии или артрита уменьшаются. Персонализированное означает, что оно создается в самом буквальном смысле под вас, и будет работать только для вас. Панацея в названии проекта, по сути означает, что вы будете создавать свое персональное плацебо для всевозможных нужд. И оно будет становиться сильнее с каждым разом, пока вы будете его использовать. Какое же слово еще можно использовать, если не панацея? Можно сказать: поведенчески-обусловленная модуляция.
Панацея — мифическое лекарство от всех болезней, поиском которого занимались алхимики. Карл Линней дал это название женьшеню, и, хотя растение надежд не оправдало, название panax L. осталось. Значение слова настолько идеализированно, что употребляется практически всегда с отрицанием: “это, конечно, не панацея”, или “нельзя назвать панацеей, но”. Кроме этого, термин панацея часто встречается в категории слов, описывающих шарлатанство или псевдонауку.
Эти факторы ограничивают нас стилистически: мы как бы не можем, если мы в своем уме, и заботимся о своей репутации, говорить о панацее серьезно, ведь это будет означать, что мы или поддерживаем псевдонаучные теории, или непростительно наивны. Но кроме стилистического ограничения, мы в прямом смысле ограничиваем свое воображение и мысли о возможном. А шарлатаны не ограничивают себя ничем. И люди «покупаются» на это, все же веря в возможность панацеи. Получается, что эта вера, о которой можно говорить, как об одном из факторов исцеления, как о методе изменения, отдается на откуп преимущественно именно мошенникам. Но в истории множество примеров того, как нечто, что ранее считалось невозможным, оказывалось реализуемым: полеты по воздуху, в космос, победа над смертельными болезнями или возможность позвонить и поговорить с человеком, где бы он ни находился. Поэтому мы не будем связывать себя такими ограничениями, тем более что речь пойдет о настоящей панацее.
Лекарства проходят клинические испытания, и каждый раз они соревнуются с одним веществом. Это вещество каждый день участвует в экспериментальном лечении тысячи разных болезней, и зачастую его эффект стараются всячески принижать, но, вопреки всему, оно часто оказывается очень эффективным. Имя этому веществу – плацебо. Чем не панацея? Если ему дать свободу, возможность развития и креативность, плацебо суждено стать идеальной панацеей.
Для этого есть несколько существенных факторов:
- В процессе создания используется самый эффективный метод изменения поведения и состояний, и он подкрепляется другими отличными методами, что не требует веры в то, что результат непременно будет.
- Социально-психологические факторы являются более значимыми для продления жизни и здоровья, чем (практически) любые лекарства, диеты, физические упражнения, витамины и БАДы. Это большая тема для раскрытия здесь, но только пару примеров: Строгое следование средиземноморской диеты – на 21%. Физические упражнения снижают риск смертности от всех причин на 23-33%. С другой стороны, сильная поддержка семьи и друзей снижает риск смертности на 45%, а искренние и теплые романтические отношения – на 49%.
- Эффекты, которые вы будете развивать, тренируя свое суперплацебо, будут усиливаться в зависимости от затраченных вами времени, усилий и таланта. К примеру, опубликованная на этой неделе статья, представила данные о значительном росте эффекта плацебо к 24-ой неделе клинических испытаний, в два и более раз, по всем замерам, включая боль, и маркеры воспалительного процесса (CRP, ESR), в сравнении с результатами на 12 неделе (Vollert еt al., 2020).
- Для развития эффектов начато использование машинного обучения, пока в области обработки естественного языка.
Начинать лучше всего именно сегодня. 2020 год обнажил наши слабости во всем, и нельзя терять время.
Если вам это интересно – пишите мне в WhatsApp и Telegram, поговорим лично. В конце концов, это же персонализированное средство.
Дисклаймер: Я не врач, это не медицинская консультация, и это не имеет отношения к медицинской сфере. По всем медицинским вопросам вы можете консультироваться со своим лечащим врачом. Проект – о тех экспериментах и возможностях, которыми вы можете воспользоваться добровольно и сознательно, отдавая себе отчет. Практически говоря, вы вольны делать с собой то, что посчитаете разумным. Кроме того, суперплацебо, в плане применения, безопаснее йоги, гомеопатии или колбасы. А в отличии от витаминов, минералов и пищевых добавок, плацебо обладает 100% биодоступностью.
Будьте здоровы!
В начале: фрагмент картины Алхимик Уильяма Феттеса Дугласа.
Частота и длительность взгляда: как понять сигналы
Длительность рассматривания партнера в рамках европейской культуры имеет разное значение, зависящее от характера общения. Выделяют следующие виды взглядов:
- Социальный — средняя продолжительность, направлен на область глаз или рта.
- Деловой — прямой, длительной, выражает стремление к достижению договоренности.
- Интимный — прерывающийся у женщин, длительный у мужчин. Используется для привлечения внимания заинтересовавшей личности.
Прямой пристальный взгляд, направленный на партнера сверху-вниз — сигнал угрозы, предупреждение о нападении. Так смотрят доминантные личности, стремящиеся утвердить свое положение. В дружеском и деловом общении вызывающего взгляда следует избегать, чтобы случайно не спровоцировать агрессию.
Что означает подмигивание одним или двумя глазами, частота и скорость моргания
Подмигивание при деловом общении недопустимо. Это неформальный жест, который позволяют только люди, имеющие неформальные отношения. Подмигивание — сигнал собеседнику, что договоренность достигнута, подбадривание, уверение в своей поддержке. В азиатской культуре подмигивание — форма оскорбления.
Частота моргания говорит о характере: частое моргание выдает неуверенность, склонность к подчинению, редкое моргание — самоуверенность, надменность. Прежде чем оценивать частоту моргания, следует выяснить, нет ли у собеседника проблем со зрением. При близорукости частое моргание — неконтролируемый симптом, который важно учитывать.
Направленность взгляда: о чем думает собеседник
Положение глаз во время разговора выдает намерения собеседника, степень правдивости. Если глаза направлены:
- вверх влево — партнер вспоминает о событиях, которые действительно происходили;
- вверх вправо — попытка представить предмет разговора, в реальности его не существует;
- в сторону налево — попытка вспомнить слуховую информацию, полученную ранее;
- в сторону направо — собеседник лжет, старается придумать несуществующие воспоминания;
- вниз — собеседник сосредоточен на мыслях, ведет внутренний монолог.
Эта характеристика подходит для правшей. Разговаривая с левшами, следует оценивать значение направления наоборот.
Как определить ложь по глазам? 6
В этой статье мы коснемся такого фрагмента теории лжи, как диагностика по движению глаз. Эта техника заимствована из НЛП (нейро-лингвистического программирования).
В НЛП есть такое понятие, как «ключи глазного доступа». Ученые связывают движение взгляда людей с определенными процессами, которые происходят в мозгу.
Выделяют 3 основных канала (репрезентативные системы), через которые люди воспринимают и обрабатывают информацию:
- визуальный канал (связан со зрительными образами, всем тем, что мы видим глазами);
- аудиальный канал (связан со слухом, звуками, которые мы воспринимаем);
- кинестетический канал (все, что связано с ощущениями, чувствами, запахами, вкусами, переживаниями и т.п.)
У каждого человека один из этих каналов, как правило, является ведущим. Вместе с тем, каждый из нас по мере необходимости пользуется всеми системами. И так, как же определить, о чем думает человек по движению его глаз?
Если человек восстанавливает в мыслях или представляет какой-то зрительный образ, например, вспоминает костюм, в котором он был на выпускном или представляет, как может выглядеть несуществующее животное – задействуется визуальная система. Взгляд человека «ходит» по верхней горизонтальной оси, т.е. он смотрит в правый или левый верхний угол.
Звуки мы вспоминаем или конструируем, когда наш взгляд «гуляет» по центральной оси. Если же взгляд устремлен вниз – это связано с ощущениями или внутренним монологом.
Рассмотрим подробней виды взгляда (оцениваем взгляд с позиции того, кого мы наблюдаем. Т.е. влево или вправо для наблюдаемого):
- Взгляд влево вверх – визуальное воспоминание.
- Взгляд вправо вверх – визуальное конструирование (возможно ложь).
- Взгляд влево вбок – аудиальное конструирование.
- Взгляд вправо вбок – аудиальное конструирование (возможно человек в действительности не слышал того о чем говорит, возможна ложь.)
- Взгляд влево вниз — контроль речи, внутренний монолог (часто встречается при лжи, умолчании).
- Взгляд вправо вниз – эмоции, ощущения, которые переживал человек.
Таким образом, классическая «дуга лжи» — это такой взгляд :
- Лево верх – берем какие-то образы из памяти на основании которых будем придумывать.
- Право верх – придумываем, конструируем.
- Лево низ – конструируем то, что нам надо сказать или умолчать.
Вряд ли нам удастся сразу невооруженным взглядом отследить «дугу лжи». Для этого лучше анализировать запись видеокамеры с замедлением. Невооруженным взглядом «дуга лжи» будет выглядеть так, как будто «глазки бегают».
Кроме того, стоит помнить, что ложь, сопровождается негативными переживаниями стыда и вины. Именно поэтому, человек, который обманывает, чаще всего, будет избегать прямого взгляда в глаза. Вместе с тем, он может выбрать противоположную тактику, особенно если знает, что мы попытаемся его диагностировать. В этом случае взгляд будет наоборот устремлен четко в глаза собеседнику. Про такой случай говорят: «Врет и не краснеет!»
Также, при диагностики лжи по глазам, стоит помнить, что у левшей «ключ глазного доступа» могут быть инвертированы, т.е. все наоборот. Как не попасться на удочку? Лучше провести первичную диагностику (в НЛП это называется «калибровка»). Стоит осторожно и ненавязчиво попросить человека что-либо вспомнить или представить и сверить движение его взгляда с классической схемой.
Несмотря на широкое распространение этой схемы для диагностики лжи, стоит помнить о том, что она не дает 100% гарантии. Для того, чтобы констатировать факт лжи, нужно обращать внимание и на другие телесные проявления: позу, мимику, жесты, голос и т.п.
Tags: диагностика, ложь в отношениях, психодиагностика, психологический тренинг, психология лжи, теория лжи
Как расшифровывать манеру смотреть на собеседника во время деловой встречи и свидания
Во время делового разговора следует правильно оценивать зрительные сигналы собеседника. Длительный прямой взгляд выдает властную натуру, стремление подчинить собеседников. Его может позволить только начальник по направлению к подчиненному. Опущенные вниз глаза (особенно в сочетании с наклоненной головой) — символ подчинения. Между равными партнерами допустим обмен короткими, дружелюбными взглядами, дополняющими общение.
Во время романтического свидания мужчина смотрит на женщину скрыто: прямое разглядывание расценивается как угроза. Мужской взгляд — вызывающий, поэтому он может только отвечать на внимание женщины, но не показывать заинтересованности прямо. Для романтического общения женщина — инициатор. Она может открыто смотреть на понравившегося мужчину, приглашая к знакомству. Женщине допустимо смотреть прямо и вызывающе — это не угроза, а заинтересованность.
Как определить черты характера по манере смотреть на собеседника
Изучая особенности психологического обозначения взгляда, следует оценивать направление и продолжительность комплексно. Благодаря этому можно составить примерный психологический портрет партнера, вовремя заметить ложь.
Личность с сильным лидерским характером выдает рассматривание сверху вниз: он оценивает собеседника, «давит» взглядом. Часто высокопоставленные чиновники смотрят на нижестоящих с прищуром. У них приподнята одна бровь, лоб наморщен. Это выражение лица говорит об амбициях, пренебрежительности, враждебности. Когда лидер хочет сломить волю собеседника, он смотрит преувеличенно долго, используя взгляд как средство психологического давления.
Хитрые, склонные к авантюрам люди смотрят прямо, слегка вздергивая подбородок. Взгляд скользит по фигуре собеседника, не задерживаясь на деталях. Такой собеседник не избегает прямого взгляда, но смотрит не в глаза, а в точку между глазами.
Индивиды, сконцентрированные на внутреннем мире, смотрят поверх собеседника. Направление зрачков меняется хаотично — как будто не знают, куда нужно смотреть. Часто такое избегание взгляда воспринимается как скрытность, но это — проявление шизоидной акцентуации, личностной особенности индивида.
Поглядывание на собеседника снизу-вверх — символ покорности, услужливости. Бегающие глаза — внутренний страх, чувство угрозы, ожидание нападения. Иногда так смотрят влюбленные, старающиеся скрыть чувства.
Мимика, взгляд, поза и жесты
Под действием испытываемых человеком чувств рождаются скоординированные сокращения и расслабления различных лицевых структур. Они определяют выражение лица, прекрасно отражающее переживаемые эмоции. Поскольку состоянием лицевых мышц несложно научиться управлять, отображение эмоций на лице нередко пробуют маскировать, а то и имитировать. Знать выражения лица при различных эмоциях полезно не только для того, чтобы понимать других, но и для тщательнейшей отработки своих рабочих имитаций.
Об искренности человеческих эмоций обычно говорит симметрия в отображении чувства на лице, тогда как, чем сильнее фальшь, тем более разнятся мимикой его правая и левая половины.
Даже легко распознаваемая мимика иной раз очень кратковременна (доли секунды) и зачастую остается незамеченной; чтобы суметь перехватить ее, нужна порядочная практика или специальная тренировка. При этом положительные эмоции (радость, удовольствие) узнаются легче, чем отрицательные (печаль, стыд, отвращение). Особой эмоциональной выразительностью отличаются губы человека, читать которые совсем несложно: например, усиленная мимика рта или закусывание губ, к примеру, свидетельствуют о беспокойстве, а скривленный в одну сторону рот — о скепсисе или насмешке.
Читайте также: