- PVSM.RU - https://www.pvsm.ru -
Прошло два года с того момента, как вышла первая версия этого расширения для Chromium-based браузеров (работает в Google Chrome, Yandex.Browser и т.д. [1]), задача которого проста и понятна — скрывать настоящий User-Agent. На данный момент это расширение работает у +6.000 пользователей (что очень скромно), и несколько дней назад получил на почту письмо с просьбой его немного доработать. Оценив состояние кода, к которому два года никто не притрагивался, было решено — переписывать его с нуля. Четыре дня работы, и вуаля — встречаем свежую мажорную версию, значительно улучшенную и с новым функционалом.
Под катом будут некоторые мысли как по поводу чуть-более анонимного веб-серфинга, настройке браузера Google Chrome, и почему это расширение может быть полезно. Чуть-чуть опытные анонимусы не найдут в посте для себя чего-либо интересного, поэтому для них, как и для самых нетерпеливых, традиционно — исходники на GitHub [2] и расширение в Google Webstore [3].
Не буду говорить о том, что есть смысл пускать весь внешний сетевой трафик через VPN/OpenVPN/Tor и прочие шифрованные туннели; не буду говорить и о том, что если компетентным лицам, обладающими достаточными ресурсами понадобиться схватить тебя за задницу, скорее всего — они схватят (ты же не пользуешься только мобильным интернетом в странах третьего мира по анонимным сим-картам, постоянно перемещаясь, и глядя в сеть только с помощью telnet-а через Tor?).
Анонимность и удобство веб-серфинга, всё чаще — вещи взаимоисключающие. 3rd party cookies — это очень удобно (не надо авторизовываться на ресурсах, использующих единую авторизацию), но они же позволяют успешно отслеживать ваши перемещения по другим ресурсам. Использование proxy/socks дают дополнительные средства сокрытия реального IP адреса, но они порою успешно определяются многими ресурсами (авито, пикабу — к примеру), и из-за их использования — доступ к ресурсу для тебя закрывают. Использование агрессивных AD-блокеров определяются сайтами, и они бережно просят отключить их. Поэтому и приходится балансировать на грани — удобство, или безопасность.
Да, для меня безопасность является синонимом к слову анонимность. "Нет, мне нечего скрывать, но это совершенно не ваше дело" (с) читатель.
Я пользуюсь различными браузерами. Одновременно довольно часто запущены и FireFox, и TorBrowser, и Google Chrome (его то и использую чаще всего). В разных браузерах различные наборы плагинов/прокси, и соответственно разные настройки. Каждый из них заслуживает отдельного разговора, но сейчас я бы хотел вновь поговорить именно о Google Chrome. Ниже я перечислю настройки этого браузера по умолчанию которые, возможно, следует изменить:
https://duckduckgo.com?q=%s
;О том, какое расширение использовать для проксирования и где брать прокси-листы — ответить тебе придется самому. Скажу лишь то, что лучше всего — использовать цепочки прокси, но от этого в 9 из 10 случаев скорость серфинга просто дохнет. Публичные прокси-листы не живучие совсем. Те, что приобретались за кровные — чуть более живучие, но не значительно. Халявы тут вообще не много, и для комфорта лучше всего приобрести собственный прокси-сервер (да, такие услуги предоставляют, и довольно много кто; при оплате не используй реальные карты, имена, ip-адреса — разумеется). О том что предварительно весь внешний трафик следует пускать через туннели — я не напоминаю, ты и так всё знаешь.
Заранее прошу прощения за использованную ниже терминологию. Она не совсем корректна, но, как мне кажется — более проста для понимания
Идентификация пользователя, определение что эти N запросов выполнил именно он, а не кто-то другой — является главным врагом анонимизации. Методы идентификации делятся на как минимум два больших класса — использующих стороны клиента и сервера соответственно. На стороне клиента в классическом подходе она может выглядеть следующим образом:
"Ну и чего такого?" — спросишь ты, и будешь чертовски прав. "Пускай собирают эти данные — мне не жалко!" — да-да, дружище! А пока ты так думаешь, давай немного займемся анализом. Для посещения сайтов ты использовал Google Chrome версии 52.0.2743.116 (версия актуальная — у тебя включено автообновление) под управлением Windows 10 (минорная версия подсказывает что, возможно, у тебя не установлены крайние обновления и, как следствие, отключен Windows Update) находясь в России и, предположительно, в городе Москва (и часовой пояс соответствует), с IP провайдера "MTC", у которого данный пул привязан к Люблинскому району, скорее всего используя ноутбук (судя по разрешению экрана), и наверняка интересующийся покупкой нового автомобиля (потому как до этого на сайте drom ты искал подержанную Мазду, и именно в Москве; на сайте drom, к примеру, стоит та-же аналитика). Судя по времени посещений — ты это делал с рабочего места и, наверное, в этом или соседнем районе и работаешь. Если твоя соц. сеть использует аналогичный сервис аналитики, то… То ты понял (пример вымышленный, но не лишенный зерна здравого смысла).
Понимаешь, почему довольно важно следить за тем, какие скрипты запускает твой браузер? "Да я вообще выключаю JS по умолчанию!" — воскликнет кто-то в комментариях, и будет прав — так правильнее. Именно правильнее, а не удобнее. Тут надо тебе всё-таки выбирать, что для тебя важнее — безопасность, или комфорт. Сейчас 7 из 10 сайтов просто не заработают как надо без JS, и только тебе решать когда переходить на telnet и переезжать в страну третьего мира, попутная скупая анонимные сим-карты. Ghostery хорош, но даже если он бы давал 99% гарантию блокировки всех средств аналитики — 1% всё равно имеет место быть. Тут не может быть универсального правила, надо просто быть бдительным и чуть-чуть думать своей головой.
Как происходит идентификация на стороне сервера? Давай вспомним как выглядят access-логи http-демонов:
[meow@hosting /var/log]$ cat somesite.org.access_log | tail -3
10.12.11.254 - - [25/Jul/2016:15:51:16 +0700] "GET / HTTP/1.0" 200 5768 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)"
10.12.11.254 - - [25/Jul/2016:15:57:38 +0700] "GET / HTTP/1.0" 200 5768 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
10.12.11.254 - - [25/Jul/2016:19:19:25 +0700] "GET / HTTP/1.0" 200 5768 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0"
Примитивнее. По-умолчанию сервер сохраняет о тебе 4 вещи:
Грепнув логи по IP мы получим всех, кто мог прийти с твоего IP (если это IP на котором NAT — мы узнает кто из твоих соседей-абонентов ещё был). Грепнув же по User-Agent — мы получим почти наверняка именно конкретного пользователя. Плюс сможем посмотреть на какие страницы он ходил, в какое время и последовательности, а если есть дебаг-лог — то возможно и какие данные вводил на формах сайта, и какие плюшки у него в браузере.
Избежать утечек информации на 99.8% возможно — но это очень неудобно в плане юзабилити. Если обобщить, то к самой критичной информации можно отнести твой IP (провайдер и местонахождение) и User-Agent (используемое ПО, ОС и их версии), так как они наиболее информативны и уникальны. Как скрыть реальный IP — мы уже говорили. Как скрыть User-Agent? Есть разные способы, и описанный ниже — просто один из многих. Возможно, именно он тебе покажется чуть удобнее.
С твоего позволения основные его "фишки" будут изложены в виде простого списка:
Как выглядит?
Если у вас есть вопрос, предложение или багрепорт, но вы не можете о нем написать ни в WebStore, ни в комментариях на хабре — вот вам волшебная ссылка [12]. Хотел бы ещё написать и о том, как писал само расширение; как создал объект, который поддерживает события onGet и onSet произвольных свойств и сам хранит свои данные в хранилище; как пришел к решению реализовывать работу всех компонентов расширения с помощью своего, внутреннего API — но это совсем другая история, и исходники, возможно, расскажут её лучше. Пользуясь случаем скажу что был бы чертовски признателен в помощи перевода расширения на языки, отличные от русского и английского. Если таковое желание имеет место быть — просто создайте Issue в репозитории с темой "Помогу с переводом на %имя_локали%", или бабахните Pull-Request.
Протестировать как работу плагина, так и свою анонимность ты можешь, например, вот [13] по [14] этим [15] ссылкам [16]. Но не стоит к результатам этих тестов относиться слишком серьезно.
И, с вашего позволения, продублирую ссылку на расширение Random User-Agent в WebStore [3].
Если встретите очепятки, грамматические или пунктуационные ошибки в тексте — пишите о них в личку, пожалуйста.
Автор: cmepthuk
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/171004
Ссылки в тексте:
[1] .: https://blog.kplus.pro/
[2] исходники на GitHub: https://github.com/tarampampam/random-user-agent
[3] Google Webstore: https://goo.gl/5zl2hW
[4] по ссылке: https://myaccount.google.com/activitycontrols
[5] Limit Cookie Lifetime: https://chrome.google.com/webstore/detail/limit-cookie-lifetime/pplilgolafepgkdmocfpgblngcpdlopm
[6] эту ссылку: http://chrome://plugins/
[7] WebRTC Leak Prevent: https://chrome.google.com/webstore/detail/webrtc-leak-prevent/eiadekoaikejlgdbkbdfeijglgfdalml
[8] этой странице: https://www.browserleaks.com/webrtc
[9] Referer Control: https://chrome.google.com/webstore/detail/referer-control/hnkcfpcejkafcihlgbojoidoihckciin
[10] Ghostery: https://chrome.google.com/webstore/detail/ghostery/mlomiejdfkolichcflejclcbmpeaniij
[11] Adguard AdBlocker: https://chrome.google.com/webstore/detail/adguard-adblocker/bgnkhhnnamicmpeenaelnjfhikgbkllg
[12] волшебная ссылка: https://github.com/tarampampam/random-user-agent/issues/new
[13] вот: https://2ip.ru/privacy/
[14] по: https://whoer.net/
[15] этим: http://www.ip-score.com/
[16] ссылкам: https://panopticlick.eff.org/
[17] Источник: https://habrahabr.ru/post/307574/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.