Javascript.RU

Способы идентификации в интернете

Как идентифицировать посетителя?

Когда-то давно для этой задачи были придуманы Cookie.

Однако есть гораздо больше способов идентификации. Многие технологии так или иначе передают информацию о пользователе и компьютере.

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

Некоторые примеры подобных сервисов есть в интернете.

Сайт http://panopticlick.eff.org/ использует открыто предоставляемую браузером информацию для идентификации. Ему не нужны Cookie.

Просто зайдите на него и нажмите красную кнопку "Test Me". Мой браузер - уникален. А ваш?

Библиотека Evercookie на http://samy.pl/evercookie/ позволяет сохранять информацию, используя HTML5, Flash и другие средства. Удалить ее, просто почистив Cookie, невозможно.

Ресурсы выше - так, детские игры.

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

На ум приходит как минимум несколько применений.

Реклама..
"Петя, это ты! Ну и что, что куки отключены… Мы тебя узнали, купи слона!"
Бан..
"Вася, тебе же сказали. За-ба-нен! И прекрати менять IP/браузеры."
Наблюдение и сбор информации..
Большой брат смотрит за тобой.

Подозреваю, что могут быть и другие примеры использования.

Различные технологии позволяют серверу получать информацию о браузере и компьютере.

Фрагменты этой информации образуют подпись, которая, как вы наверно уже видели на http://panopticlick.eff.org/, позволяет успешно идентифицировать компьютер.

Да, Cookie - это "old school". С точки зрения идентификации - работают, но не фонтан. Вася знает про куки. Злой тролль знает про куки и может их удалить или отключить..

Но интересно то, что иногда их и поставить - проблема. Даже если удалять никто не собирается.

Рассмотрим ситуацию... На странице установлен скрипт или даже iframe. Может ли он поставить свои cookie, и тем самым пометить посетителя?

А перед тем, как вы скажете "да, разумеется, любой HTTP-ответ может поставить cookie" - небольшой пример.

Вот iframe. Она загрузит iframe, который ставит cookie в заголовке и в javascript, а затем выведет текущие cookie на экран.

<?php setcookie('sid', rand(),0,'/'); ?><!DOCTYPE HTML>
<html>
<head>
<script>

  document.cookie = 'sid=' + Math.random() + ';path=/'
  alert(document.cookie)

</script>
</head>
<body></body>
</html>

Вот страница для просмотра этого ифрейма. Запустите ее в IE или Safari:

<!DOCTYPE HTML>
<html>
<body>

<iframe src="http://ilyakantor.ru/js/3rd/frame.php" height="100"></iframe>

</body>
</html>

При настройках браузера по умолчанию, вы должны увидеть пустой алерт. Это означает, что кука не поставилась.

Дело в том, что cookie с других доменов имеют особое название "3rd party cookie" и особое отношение со стороны браузера.

Браузеры можно настроить на запрет таких Cookies. Но пример выше не ставит куку даже при настройках по умолчанию. В чем дело?

IE не ставит 3rd party cookies без специальной политики P3P, которую можно передать в серверных заголовках. Эта политика показывает, в каких целях вы "метите" пользователя, что вы собираетесь делать с информацией о нем в дальнейшем.

Здесь все довольно просто - сервер с другого домена должен добавить заголовок, можно вот такой:

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

После этого IE будет радостно ставить переданные куки.

... Но это не все. Настройки Safari по умолчанию запрещают прием 3rd party cookies. Аналогичную опцию можно включить и в ряде других браузеров.

Хорошо если такие куки вам не обязательны, а если они - важная часть системы, например, кросс-доменной авторизации?

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

Для этого достаточно отправить в iframe POST-запрос, и в ответ на него сервер с другого домена уже может передать cookie, которые браузер примет как родные.

Код фрейма:

<?php 
setcookie('sid', time(),0,'/');
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); 

?><!DOCTYPE HTML>
<html>
<head>
<script>

alert(document.cookie)

</script>
</head>
<body></body>
</html>

Код страницы для просмотра в Safari или другом браузере с запретом 3rd party cookies:

<!DOCTYPE HTML>
<body>
<script>

onload = function() {
    var div = document.createElement('div')
    document.body.appendChild(div)

    div.innerHTML = '<iframe src="" name="iframe"></iframe> \
<form method="POST" target="iframe" action="http://ilyakantor.ru/js/3rd/frame_hack.php"></form>'

    div.getElementsByTagName('form')[0].submit()
}

</script>
</body>

Попробовали? Должно быть все в порядке.

И еще пара заметок.

  • Строго говоря, это не совсем хак, ведь такой iframe - не чужой внешнему окну. В него происходит POST.. А значит, скорее всего такой подход будет работать и далее.
  • P3P-политика будет работать и для других объектов: подключаемых скриптов, картинок и так далее. Но... Только в IE. Другие браузеры ее не уважают, так что для Safari пока только iframe.

С помощью javascript из браузера можно извлечь массу всего интересного. И не только извлечь, но и сохранить.

Этим ёмким словом называются различные варианты сохранения информации в браузере.

Если подробнее:

  • userData (IE*)
  • HTML5 localStorage (все современные браузеры)
  • HTML5 database (Chrome, Safari, Opera)

Всё это позволяет сохранить информацию в браузере, которая, в отличие от cookie, не пересылается на сервер при HTTP-запросах.

Более подробно о технологии вы можете почитать в статье Хранение данных на клиенте. DOM Storage и его аналоги..

Пример - ниже. Там iframe с адреса http://javascript.ru/files/id/persistence.html, по нажатию на Save сохраняет данные из текстового поля во все доступные хранилища, по Load - восстанавливает.

Кнопка Refresh перегружает страницу. А впрочем, можно и браузер переоткрыть, разницы не будет.

С помощью Javascript доступен замечательный объект nagivator, содержащий полную информацию о браузере посетителя и название его OS.

<pre>
<script>

  for(var prop in navigator) { 
    if (navigator[prop] instanceof Object || navigator[prop]==='') continue
    document.writeln(prop+": "+navigator[prop])
  }

</script>

Многие из этих свойств не изменяются даже при обновлении мажорной версии браузера, не говоря уже минорной.

Для полноты картины все об экране посетителя расскажет объект screen.

<pre>
<script>

  for(var prop in screen) { 
    if (navigator[prop] instanceof Object || screen[prop]==='') continue
    document.writeln(prop+": "+screen[prop])
  }

</script>

Плюс этой информации - в том, что этот компонент подписи очень стабилен и не меняется почти никогда.

Для всех браузеров, кроме IE, этот объект содержит информацию о плагинах и их версии. Посмотрите сами:

<pre>
<script>
  var prev
  for(var i=0;i<navigator.plugins.length;i++) { 
    var plugin = navigator.plugins[i]
    var plugin = plugin.name+" "+(plugin.version || '')
    if (prev == plugin ) continue
    document.writeln(plugin )
    prev = plugin 
  }

</script>

Вася обновил браузер? Ничего! Большинство плагинов по-прежнему такие же и тех же версий.

В IE все сложнее. Плагины там являются компонентами ActiveX, поэтому получить их список нельзя. Однако, есть workaround - обернуть создание компонентов в try..catch:

try {
  new ActiveXObject('плагин')
  // плагин есть
} catch(e) {
 // плагина нет
}

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

Замечательная статья по этому поводу: Detecting plugins in Internet Explorer.

Обнаруживаемые плагины:

  • Adobe Reader
  • Flash Player
  • Java Runtime Environment
  • QuickTime Player
  • RealPlayer
  • Shockwave Player
  • Windows Media Player

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

Объект Date содержит временную зону посетителя.

alert( -new Date().getTimezoneOffset()/60 )

Это еще один стабильный компонент для идентификации.

Потенциально ActiveX может очень многое. Но при обращении к большинству из них браузер запросит подтверждение у посетителя.

Для идентификации, особенно скрытой, такое явное раскрытие себя ни к чему.

Однако, получить список системных шрифтов при помощи ActiveX - проще пареной репы. И без всяких вопросов.

Следующий пример будет работать, только в IE.

<object id="dialogHelper" classid="clsid:3050F819-98B5-11CF-BB82-00AA00BDCE0B" width="0px" height="0px"></object>

<script>
onload = function() {
  var dlg = document.getElementById('dialogHelper')

  var fonts = []
  for (var i=0; i<dlg.fonts.count; i++) {
    fonts.push('<div style="font-family:' + dlg.fonts(i+1) + '">' + dlg.fonts(i+1)+ '</div>')
  }
  document.write(fonts.join(""))
}
</script>

Как известно, у Flash есть свое локальное хранилище, в которое можно записывать данные и доставать их оттуда.

При этом Flash может замечательно взаимодействовать с Javascript, см. статью Javascript <-> Flash мост.

То есть, самый простой способ - это сохранить идентификатор посетителя и потом проверять его по необходимости.

Важно, что в отличие от методов хранения HTML 5, flash-хранилище привязано не к домену страницы, а к домену, с которого загружено flash-приложение.

Иначе говоря, flash'ка с домена http://ads.com, находясь на странице http://a.com и http://b.com имеет одинаковое хранилище. Даже если эти страницы открывают в разных браузерах - хранилище разделяется, т.к. привязано не к браузеру, а к пользователю компьютера (на уровне OS).

Для получения сведений из Flash можно использовать объекты:

Таким образом можно получить:

  • Сведения об экране.
  • Сведения об операционной системе и ее возможностях.
  • Список системных шрифтов.

Всю эту красоту можно передать либо в Javascript, либо напрямую на сервер.

Flash работает даже с выключенным javascript.

Из Flash можно проверить, включен ли JS и, при необходимости, связаться с сервером напрямую, используя сокеты: "Тук-тук, я флеш, под IP таким-то сейчас сидит Вася..."

Есть ли хоть одна технология, которая "не стучит". Первая мысль была - CSS.

... Как я ошибался.

Современный CSS поддерживает media-query, то есть условия на:

  • device-width
  • device-height
  • device-aspect-ratio
  • color-index

Использовать это очень просто. Достаточно добавить несколько условий вида:

@media screen and (min-device-width: 0px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=0); } }
}

@media screen and (min-device-width: 800px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=800); } 
}

@media screen and (min-device-width: 1024px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=1024); } 
}

@media screen and (min-device-width: 1280px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=1280); } 
}

@media screen and (min-device-width: 1440px) { 
  #device-width { background: url(/forum/media.php?sid=...&device-width=480); } 
}

Как видно, условия перекрывают друг друга, и в каждом указана минимальная ширина экрана. Например, при экране 1280px будет использован фон media.php?key=...&device-width=1280.

Иначе говоря, на сервер отправится запрос, который скажет, что у посетителя экран - 1280 пикселей. При этом параметр sid может использоваться для сессии при отключенных cookies.

Да, это не внутренний IP, не МАС, но оно работает с отключенными JS и Cookies. А это уже чего-то стоит, информация стабильная и очень конкретная. Как компонент цифровой подписи - в самый раз.

Можно ли использовать History для хранения идентификатора посетителя? Да, но не везде.

Для этого вспомним, что CSS-ссылка посещенная отличается от непосещенной по цвету.

Можно создать ссылку с нужным href и, используя getComputedStyle получить цвет, т.е. выяснить, посещал ли пользователь ссылку.

Любой идентификатор можно представить в двоичном виде, например 867865 = 11010011111000011001.

Для записи идентификатора - создаем iframe и последовательно постим туда адреса вида /visited/0/1, /visited/1/0, /visited/2/0, /visited/3/1 .. и так далее, с конца бинарного числа к началу. Так что для каждого бита будет посещена одна из ссылок: /visited/n/1 или /visited/n/0.

Для загрузки идентификатора достаточно создать такие ссылки и проверить, какие из них посещены и, таким образом, восстановить число. 32 ссылки - это 32-битный идентификатор, его хватит примерно на 4 миллиарда посетителей.

Надо сказать, что такой способ доступа к History через CSS известен уже много лет, и дыра постепенно закрывается браузерами, см. например https://bugzilla.mozilla.org/show_bug.cgi?id=147777.

С IP все просто, но не совсем. Есть ведь динамические IP.

Что если Вася поменяет динамический адрес, как его отследить? А очень просто - записывать в подпись не только сам IP, а провайдера, который его выдал.

Так что переподключение Васю отчасти скроет (если ип другой), но провайдер в подписи останется тот же, это упростит идентификацию.

Также по базе GeoIP можно получить регион и страну.

Да, это не 100% надежно, но подпись - компонентная. Каждый компонент может быть неуникален, может меняться, но все вместе они однозначно идентифицируют посетителя.

Замечательный и очевидный источник информации:

  • User-Agent
  • Accept
  • Keep-Alive
  • Via (proxy)
  • Редкие заголовки

Заголовок User-Agent может содержать не только информацию о браузере, но и OS, плагины, детали сборки.

Для более надежной обработки User-Agent можно распарсить на компоненты и использовать их как независимые части подписи, чтобы обновление одного из плагинов не сильно на ней отразилось.

Использовать кэш браузера можно различными способами. Самый простой - ETag.

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

В iframe ниже - ваш уникальный ETag.

Обратите внимание - даже при перезагрузке страницы по Ctrl-F5 кэш ифрейма не очищается! То есть, сервер вас по-прежнему будет узнавать, проверьте сами...

Идентифицировать браузер можно и при заведомо кривом UserAgent'е. Достаточно посмотреть поддержку различных фич. Причем, для многих из них даже javascript включать не обязательно.

  • Количество одновременных HTTP-соединений
  • Поддержка link prefetching
  • Поддержка conditional comments
  • CSS Hacks and Features
  • ...

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

TCP-протокол с радостью предоставит информацию о вашей операционной системе.

Дело в том, что в различных OS по-разному настроен TCP-стек. А роутер, как правило, не меняет пакет, а просто передает его дальше.

Характеристики TCP-пакетов формируют свой фрагмент цифровой подписи.

Для его распознавания проще всего применить утилиту p0f.

Работает очень просто.

  1. Вешается как фильтр пакетов и слушает сокет.
  2. Сохраняет TCP-сигнатуры пакетов в кеш в памяти, держит их N секунд.
  3. Веб-сервер отправляет на сокет сообщение "А кто это только что зашел под IP X.Y.Z ?"
  4. p0f выдает OS, которую вычисляет по своей базе из сигнатуры (можно пропатчить, чтобы выдавал саму сигнатуру).

Из всей этой красоты, описанной выше, строится компонентная цифровая подпись.

Алгоритм на сервере умеет сравнивать подписи. Пример такого алгоритма вы можете увидеть в статье на https://panopticlick.eff.org/ : How Unique is Your Browser?.

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

Итак, мы поговорили о том, как идентифицировать посетителя. А теперь - поговорим, как скрыться.

Способов идентификации очень много. "Стучит" буквально все.

Одного простого средства типа "privacy mode" в браузере для скрытия недостаточно. Нужно одновременно использовать несколько защит:

Privacy/incognito mode
Закроет возможность идентификации через кеш и различные виды browser storage. Желательна последняя версии Flash, т.к. хранилище ранних версий не интегрировано с браузером.
NoScript
Плагин для Firefox. Перекроет запуск скриптов, апплетов, flash, silverlight и другое активное содержимое. Таким образом будет закрыты механизмы идентификации через javascript, java, flash.

Жаль, для других браузеров такого нет.

Клиент к сети Tor, в частности расширение TorButton для Firefox
Ваши запросы будут приходить с разных IP. Некоторые ресурсы, например Wikipedia, блокируют Tor.
Локальный proxy, который правит заголовки.
Заголовки типа User-Agent, Accept и т.п. ни в коем случае нельзя резать.

Если браузер - Firefox (это можно обнаружить по браузерным фичам), а User-Agent порезан или IE - это выделит из толпы самым ярчайшим образом.

Самое надежное - это поставить самые типичные заголовки для в вашей версии браузера. А любой нестандарт - убрать. Слиться с толпой.

При аккуратном применении этих мер - вас все равно можно будет как-то идентифицировать.

Например, отключенный javascript, отключенные cookies - это выделяет из толпы. Tor - тоже паттерн (запросы с разных IP в рамках одной сессии).

Но фингерпринтинг - вероятностный метод. Он часто позволяет идентифицировать посетителя с вероятностью, близкой к 100%, но eсли посетитель предпринимает серьезные усилия по анонимизации, а общее количество посетителей очень большое, то эта вероятность падает.

Реально достичь значения - 1 из 50.000. Для ресурсов с сотнями тысяч посетителей такое посещение достаточно анонимно.

P.S. После публикации статьи порекомендовали еще behavior clientCaps как источник информации, но вся информация оттуда доступна через navigator и screen, так что в статью этот источник не добавлен.


Автор: 바카라사이트 (не зарегистрирован), дата: 16 января, 2023 - 07:00
#permalink

I am very impressed with your writing 바카라사이트 I couldn't think of this, but it's amazing! I wrote several posts similar to this one, but please come and see!


Автор: 바카라게임사이트 (не зарегистрирован), дата: 16 января, 2023 - 07:19
#permalink

I would like to thank you for the efforts you have put in penning this site. I’m hoping to view the same high-grade content by you later on as well. In truth, your creative writing abilities has motivated me to get my own, personal website now. 바카라게임사이트


Автор: 온라인카지노 (не зарегистрирован), дата: 16 января, 2023 - 07:24
#permalink

What a post I've been looking for! I'm very happy to finally read this post. 온라인카지노 Thank you very much. Can I refer to your post on my website? Your post touched me a lot and helped me a lot. If you have any questions, please visit my site and read what kind of posts I am posting. I am sure it will be interesting.


Автор: 온라인카지노 (не зарегистрирован), дата: 16 января, 2023 - 07:26
#permalink

What a post I've been looking for! I'm very happy to finally read this post. 온라인카지노 Thank you very much. Can I refer to your post on my website? Your post touched me a lot and helped me a lot. If you have any questions, please visit my site and read what kind of posts I am posting. I am sure it will be interesting.


Автор: Гость (не зарегистрирован), дата: 16 января, 2023 - 08:17
#permalink

Good article and good content. 은꼴thank you.


Автор: 메이저사이트순위 (не зарегистрирован), дата: 17 января, 2023 - 08:43
#permalink

메이저사이트순위 https://todongsan.com/majorsite-ranking/ Sign holders and stands for every budget and marketing campaign. Outdoor sign holders can aid a point of sale purchasing campaign and can also be used as an effective sales tool for in store promotions and internal office information. You have a good look at this article and photo. I will subscribe in the future. I also run a site Please visit my site and leave feedback It's a very small site, but about 1000 people come in a day, so you're making money while operating the site, and come to play! Extremely pleasant article, I appreciated perusing your post, exceptionally decent share, I need to twit this to my adherents. Much appreciated!


Автор: 먹튀사이트 (не зарегистрирован), дата: 17 января, 2023 - 09:03
#permalink

First, I appreciate your blog; I have read your article carefully, Your content is very valuable to me. I hope people like this blog too. I hope you will gain more experience with your knowledge; That’s why people get more information. Interesting topic for a blog. I have been searching the Internet for fun and came upon your website. Fabulous post. Thanks a ton for sharing your knowledge! It is great to see that some people still put in an effort into managing their websites. I'll be sure to check back again real soon. This is highly informatics, crisp and clear. I think that everything has been described in systematic manner so that reader could get maximum information and learn many things. 먹튀사이트


Автор: 토토 (не зарегистрирован), дата: 17 января, 2023 - 09:11
#permalink

I am incapable of reading articles online very often, but I’m happy I did today. It is very well written, and your points are well-expressed. I request you warmly, please, don’t ever stop writing. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. Acknowledges for paper such a beneficial composition, I stumbled beside your blog besides decipher a limited announce. I want your technique of inscription...It is very good, but look at the information at this address
토토


Автор: 먹튀검색 (не зарегистрирован), дата: 17 января, 2023 - 09:12
#permalink

Fabulous article. That blog post impinges on a whole lot of immediate need conflicts of the contemporary culture. You cannot be uninvolved to help you a lot of these conflicts. It blog post grants ideas and even creative concepts. Highly insightful and even helpful. After reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article. Better than average information, gainful and sensational framework, as offer well finished with shrewd contemplations and thoughts, clusters of exceptional information and inspiration, both of which I require, by virtue of offer such an obliging information here. You have lifted a basic offspring..Blesss for using..I would need to think about better most recent exchanges from this blog..preserve posting..
먹튀검색


Автор: 바카라게임사이트 (не зарегистрирован), дата: 17 января, 2023 - 09:20
#permalink

I'm so happy to finally find a post with what I want. 바카라게임사이트 You have inspired me a lot. If you are satisfied, please visit my website and leave your feedback.
fchh


Автор: 카지노 (не зарегистрирован), дата: 17 января, 2023 - 09:23
#permalink

I am fascinated this informative article. There are so many things mentioned here I had never thought of before. You have made me realize there is more than one way to think about these things . This is my first visit to your blog! We are a team of volunteers and new initiatives in the same niche. Blog gave us useful information to work. You have done an amazing job! Dazzling post. I Have Been examining about this issue. So a commitment of thankfulness is all together to post. Totally cool post. It 's incredibly exceptionally OK and Useful post.Thanks . This is important, though it's necessary to help you head over to it weblink: 카지노


Автор: 스포츠토토 (не зарегистрирован), дата: 17 января, 2023 - 10:06
#permalink

Hello I am so delighted I located your blog, I really located you by mistake, while I was watching on google for something else, Anyways I am here now and could just like to say thank for a tremendous post and a all round entertaining website. Please do keep up the great work. I truly adored perusing your blog. It was exceptionally all around created and straightforward. Not at all like different sites I have perused which are truly not that good.Thanks alot! Truly, this article is really one of the very best in the history of articles. I am a antique ’Article’ collector and I sometimes read some new articles if I find them interesting. And I found this one pretty fascinating and it should go into my collection. Very good work!
스포츠토토


Автор: 토토안전나라 (не зарегистрирован), дата: 17 января, 2023 - 10:13
#permalink

I feel extremely cheerful to have seen your site page and anticipate such a large number of all the more engaging circumstances perusing here. Much appreciated yet again for every one of the points of interest. I need you to thank for your season of this great read!!! I definately appreciate each and every piece of it and I have you bookmarked to look at new stuff of your blog an unquestionable requirement read blog! Sustain the great do the job, When i understand several threads within this web page in addition to I'm sure that a world-wide-web blog site is usually authentic useful possesses bought bags connected with excellent facts. 토토안전나라


Автор: 토토꽁머니 (не зарегистрирован), дата: 17 января, 2023 - 10:49
#permalink

토토꽁머니 https://hugo-dixon.com/freemoney/ Great post. I was constantly checking this article and I am impressed! Extremely helpful information, especially the main part. I care for such info a lot. I was seeking this particular information for a very long time. Good luck and Thank you! I am so delighted I located your blog, I really located you by mistake, while I was watching on google for something else, Anyways I am here now and could just like to say thank for a tremendous post and a all round entertaining website. Please do keep up the great work . This is my first visit to your blog! We are a team of volunteers and new initiatives in the same niche. Blog gave us useful information to work. You have done an amazing job!


Автор: 온카맨 (не зарегистрирован), дата: 17 января, 2023 - 11:25
#permalink

At the point when you are prepared doing all that we have discussed in the past sections, which is thinking about your shopping list with cautious arranging exactness, discovering the medications you require recall that we have an incredible number of sildenafil pills, which are conventional Viagra tablets in their various versions, structures and measurements and sending them to the shopping basket, you will be diverted to the page with your own subtleties. at the point when I have time I will have returned to peruse much more, Please keep up the When I take a gander at your blog in Chrome, it looks fine however when opening.
온카맨


Автор: 온라인카지노 (не зарегистрирован), дата: 17 января, 2023 - 11:47
#permalink

Looking at this article, I miss the time when I didn't wear a mask. 온라인카지노 Hopefully this corona will end soon. My blog is a blog that mainly posts pictures of daily life before Corona and landscapes at that time. If you want to remember that time again, please visit us.


Автор: 카지노사이트추천 (не зарегистрирован), дата: 17 января, 2023 - 11:49
#permalink

I'm writing on this topic these days, 카지노사이트추천 , but I have stopped writing because there is no reference material. Then I accidentally found your article. I can refer to a variety of materials, so I think the work I was preparing will work! Thank you for your efforts.


Автор: 해외배팅사이트 (не зарегистрирован), дата: 17 января, 2023 - 12:16
#permalink

Thank you so much for the post you do. I like your post and all you share with us is up to date and quite informative, i would like to bookmark the page so i can come here again to read you, as you have done a wonderful job . Excellent information on your blog, thank you for taking the time to share with us. Amazing insight you have on this, it's nice to find a website that details so much information about different artists . I like your post. It is good to see you verbalize from the heart and clarity on this important subject can be easily observed.. I absolutely adore this information as this is going to be very difficulty time for the whole world. great things are coming for sure .
해외배팅사이트


Автор: 토토지존 (не зарегистрирован), дата: 17 января, 2023 - 12:27
#permalink

Brilliant data! I lately came throughout your blog and have been studying along. I notion I'd leave my first remark. I don’t recognize what to say except that I have. I’m excited to uncover this page. I need to to thank you for ones time for this particularly fantastic read!! I definitely really liked every part of it and i also have you saved to fav to look at new information in your site. I have read your article; it is very informative and helpful for me. I admire the valuable information you offer in your articles. Thanks for posting it . I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.
토토지존


Автор: 토담토담토토 (не зарегистрирован), дата: 17 января, 2023 - 13:12
#permalink

Really special blog post, Thanks for your time designed for writing It education. Outstandingly drafted guide, if only every
토담토담토토


Автор: 먹튀 (не зарегистрирован), дата: 17 января, 2023 - 13:41
#permalink

Introductory You got a great blog .I assurance be engaged with in addition to uniform minutes. I see you got really extremely practical issues , I assurance be continually checking your blog blesss. Thanks much for another information. It isn?t easy that sort expertise reading through homework, i am keeping an eye out for . you have a excellent weblog here! do you wish to make some invite posts in my small blog? My brother recommended I would possibly like this website. He used to be entirely right. This submit actually made my day. You cann’t imagine just how much time I had spent for this information! Thank you! 먹튀


Автор: 토토매거진 (не зарегистрирован), дата: 17 января, 2023 - 14:39
#permalink

Somebody essentially help to make seriously posts I might state. That is the very first time I frequented your website page and to this point? I surprised with the analysis you made to create this particular submit incredible. Fantastic job! This post couldn’t be written much better! Looking through this post reminds me of my previous roommate! This is very interesting, You are a very skilled blogger. I have joined your feed and look forward to seeking more of your fantastic post. The writer is fiery about obtaining wooden furniture on the web and his examination about best wooden furniture has understood the arrangement of this article. Great info! I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have.
토토매거진


Автор: 먹튀대피소 (не зарегистрирован), дата: 17 января, 2023 - 15:38
#permalink

Nice post. I was checking constantly this blog and I’m impressed! Extremely useful info specially the last part I care for such information a lot. I was seeking this certain info for a long time. Thank you and good luck. Thanks for all your valuable hard work on this website. Betty is happy to participate in the research and it is really obvious why. I learn everything about the lively way it presents rewarding elements in this blog and it also improves the contribution of others in this concept, so my princess is no doubt starting to learn many things. Enjoy the rest of the year. You did a great job. Great .. Stunning .. I'll bookmark your blog and take the feeds additionally… I'm glad to discover such huge numbers of valuable information here in the post. we need work out more methods in such manner. a debt of gratitude is in order for sharing.


Автор: 카지노사이트추천 (не зарегистрирован), дата: 18 января, 2023 - 06:22
#permalink

Hello, I am one of the most impressed people in your article. 카지노사이트추천 I'm very curious about how you write such a good article. Are you an expert on this subject? I think so. Thank you again for allowing me to read these posts, and have a nice day today. Thank you.
FHG


Автор: 카지노사이트 (не зарегистрирован), дата: 18 января, 2023 - 06:23
#permalink

What a post I've been looking for! I'm very happy to finally read this post. 카지노사이트 Thank you very much. Can I refer to your post on my website? Your post touched me a lot and helped me a lot. If you have any questions, please visit my site and read what kind of posts I am posting. I am sure it will be interesting.
FHH


Автор: Гость (не зарегистрирован), дата: 19 января, 2023 - 21:48
#permalink

Yeh Rishta Kya Kehlata Hai watch online latest episodes, Desi Serial Yeh Rishta Kya Kehlata Hai full episode all hd videos, Yeh Rishta kya kehlata hai today episode, next episode promo dailymotion.


Автор: zogo (не зарегистрирован), дата: 21 января, 2023 - 03:56
#permalink

Автор: Anupama Online (не зарегистрирован), дата: 26 января, 2023 - 11:15
#permalink

Watch Anupama Full Episodes Apne Tv Anupama Yo Desi Live
Stream Online HD Anupama Kal Wala Episodes Downloads.


Автор: 바카라사이트추천 (не зарегистрирован), дата: 27 января, 2023 - 07:48
#permalink

I’m not sure exactly why but this weblog is loading incredibly slow for me. Is anyone else having this problem or is it a problem on my end? I’ll check back later on and see if the problem still exists. 바카라사이트추천
TU


Автор: Гость (не зарегистрирован), дата: 29 января, 2023 - 09:36
#permalink

vapeciga545692414.wordpress.com is a good site which you never seen before.vapepin


Автор: 바카라사이트 (не зарегистрирован), дата: 29 января, 2023 - 10:01
#permalink

I've been using WordPress on a number of websites for about a year and am worried about switching to another platform. I have heard good things about 바카라사이트. Is there a way I can transfer all my wordpress content into it? Any help would be really appreciated!


Автор: Mtv Roadies 19 (не зарегистрирован), дата: 29 января, 2023 - 18:08
#permalink

MTV Roadies Season 19 Watch Online All Episodes Live Stream MTV Roadies
Desi Tv Serials MTV Roadies 19 Apne Tv Live MTV Roadies Full Video.

Mtv Roadies 19


Автор: Гость (не зарегистрирован), дата: 29 января, 2023 - 18:27
#permalink

Автор: Rick Simpson Oil Store (не зарегистрирован), дата: 30 января, 2023 - 13:31
#permalink

Автор: 플레이포커 머니상 (не зарегистрирован), дата: 1 февраля, 2023 - 20:18
#permalink

I've been reading all the articles related to 플레이포커머니상 for the past hour, but I don't know why I saw this post now. It seems like very useful information.


Автор: 플레이포커 머니상 (не зарегистрирован), дата: 1 февраля, 2023 - 20:20
#permalink

I've been reading all the articles related to 플레이포커머니상 for the past hour, but I don't know why I saw this post now. It seems like very useful information.


Автор: 플레이포커 머니상 (не зарегистрирован), дата: 1 февраля, 2023 - 20:31
#permalink

I've been reading all the articles related to 플레이포커머니상 for the past hour, but I don't know why I saw this post now. It seems like very useful information.


Автор: 플레이포커 머니상 (не зарегистрирован), дата: 2 февраля, 2023 - 13:08
#permalink

I love seeing more and more people visiting your blog. I, who have been together for a long time, created a forum with the same topic as yours this time. The subject is going to be captured by 플레이포커머니상.


Автор: lagjaagale (не зарегистрирован), дата: 3 февраля, 2023 - 10:20
#permalink

lag ja gale is an Indian Hindi-language soap opera that is upcoming drama
premiered on 7th February 2023 on Zee Tv with huge fan following of and TRP.

Lag Jaa Gale Online


Автор: 바카라게임사이트 (не зарегистрирован), дата: 4 февраля, 2023 - 06:50
#permalink

I would like to thank you for the efforts you have put in penning this site. I’m hoping to view the same high-grade content by you later on as well. In truth, your creative writing abilities has motivated me to get my own, personal website now. 바카라게임사이트


Автор: 카지노사이트 (не зарегистрирован), дата: 4 февраля, 2023 - 06:52
#permalink

I've been troubled for several days with this topic. 카지노사이트, But by chance looking at your post solved my problem! I will leave my blog, so when would you like to visit it?


Автор: 카지노사이트 (не зарегистрирован), дата: 4 февраля, 2023 - 06:58
#permalink

I've been troubled for several days with this topic. 카지노사이트, But by chance looking at your post solved my problem! I will leave my blog, so when would you like to visit it?


Автор: 카지노게임사이트 (не зарегистрирован), дата: 4 февраля, 2023 - 07:53
#permalink

When I read an article on this topic, 카지노게임사이트 the first thought was profound and difficult, and I wondered if others could understand.. My site has a discussion board for articles and photos similar to this topic. Could you please visit me when you have time to discuss this topic?


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 2 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum