Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 129, СЕНТЯБРЬ 2009 г.

Выжми максимум. Как выжить на слабом коннекте?

Степан "Step" Ильин (step@glc.ru)

Минус 1900 р. на счету мобильного телефона и море потерянного времени. Нет, я не пытался выиграть ноутбук, отправляя SMS'ки, и даже не заказывал рингтоны. Я просто посидел в Инете через GPRS/EDGE. И вот, что я тебе скажу: использовать этот сервис без ухищрений - это полное не уважение к себе. Как заставить Инет работать, выжать максимум из слабого коннекта и вообще наладить мобильную жизнь, читай в этой статье.

Мобильные операторы давно рассказывают о возможностях EDGE. Обещается, что надстройка на GPRS поможет достичь скорости до 474 кбит/c. Цифра, понятное дело, чисто теоретическая, и достичь ее можно только в пике, если вдруг мобильный оператор расщедриться и выделит тебе 8 тайм-слотов и будет использовать самую продвинутую схему кодирования. А на практике? На деле все совсем по-другому: даже если на телефоне горит значок E, это еще не гарантирует, что Инет будет работать в принципе. Я не шучу: в некоторые местах (справедливости ради стоит сказать, что проехал я немного) потери пакетов составляли до 60-70% даже при наличие более-менее уверенного приема. Причем ничего кроме, как попытка воспользоваться SIM'кой другого оператора, не помогало. Впрочем, даже там где Инет есть, сталкиваешься с мизерной скоростью, дичайшими лагами, задержками в резолвинге DNS и при всем при этом нереальными расценками на GPRS трафик. Приятно удивило только одно: пока в Москве операторы лишь предпринимают попытки локально ввести 3G, в некоторых регионах он уже вполне себе функционирует. Что, впрочем, не умаляет полезность тех приемов, которые помогут пользователям мобильного инета и просто слабого коннекта сделать серфинг более комфортным, а также сэкономить кучу денег.

Трик 1: Юзаем компрессор Toonel.net

Решение toonel.net (http://www.toonel.net) мы рассматривали уже не раз и не два. Клиентская часть приложения, написанного на Java, представляет собой локальный проксик. Прописав его в настройках браузера, мы переадресуем трафик клиентской части toonel.net, которая через специальный сервер запрашивает нужные данные и получает их в сжатом виде. Распаковав информацию, toonel.net возвращает ее обратно браузеру в привычном для него виде. Аналогичным образом сжимать можно и другие TCP/IP протоколы: FTP, SMTP и т.д.

У toonel.net есть несколько неоспоримых плюсов. Во-первых, использование для разработки языка Java позволило написать клиента для Windows, Linux, Mac OS, а также для запуска на любых мобильных платформах. Настройка сжимающего туннеля осуществляется через удобный GUI-интерфейс: именно там и настраиваются порты, на которых toonel принимает подключения, чтобы дальше перенаправить их на сервер. Настроив программы на прием подключений на 7999 порту, нужно прописать прокси в браузере: 127.0.0.1. Аналогичным образом можно настроить туннели и для других портов: 25 (SMTP), 110 (POP), 143 (IMAP) и т.д. В отдельной вкладке клиента ведется наглядная статистика сжатия.

Собственно, качество сжатия - это второй плюс этого решения. В среднем, с использованием toonel.net ты потребляешь в 2-2.5 раза меньше трафика, чем при прямом коннекте. И все это без какой-либо оплаты услуг: toonel.net полностью бесплатен. К сожалению, свободное использование непременно оказывается и минусом. Проект некоммерческий и количество серверов, используемых для сжатия трафика, сильно ограничено. В результате, получаем сервис который то работает, то не работает. В своей поездке мне лишь в половине случаев удалось всецело насладиться стабильным коннектом через toonel.net, но иной раз запросы обрабатывались в лучшем случае через раз.

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

Трик 2: Turbo-режим Opera'ы

Я люблю Opera. Норвежские парни всегда умели добавить в свое детище изюминку. Пускай даже самую маленькую фишку, но которая реально могла сделать серфинг более комфортным. В тоже время, они всегда понимали: каким бы навороченным ни был браузер, ничего не сможет компенсировать медленное открытие ресурсов, превращающее серфинг в сплошное мучение. Это они когда-то впервые додумались сделать на панели инструментов кнопку для быстрого отключения картинок. Это сейчас такая фишка кажется ерундовой, а тогда реально уникальная фича. Сейчас пришло время для другой убойной опции - Opera Turbo, которая станет одной из ключевых особенностей Opera 10. К счастью, бетки мы можем использовать уже сейчас.

По сути, Opera Turbo делает тоже самое, что и toonel.net, а именно сжимает входящий и исходящий трафик. Оптимизация осуществляется на одном из многочисленных серверов компании. Браузер использует такие серверы в качестве посредника, общаясь с ними по уже оптимизированному протоколу. В результате получаем существенный прирост скорости (на слабом коннекте) и заметное сокращение расходов на трафик.

Опция активируется кликом по пиктограмме в левом нижнем углу браузера. Индикатор отображает compression rate - т.е. коэффициент сжатия трафика. Например, "4x" указывает на то, что данные сжались в 4 раза, и это вполне реальный показатель. Можно погреть душу, посчитав сколько денег сэкономил, если навести курсор на иконку: во всплывающей подсказке отобразится количество сэкономленного трафика в количественном отношении.

Важная особенность технологии в том, что даже с использованием компрессии сайт отображется именно в том виде, в каком был изначально. Turbo-режим прогоняет трафик через сервера, которые сжимают HTML-ки (несложная задача), перепаковыаают изображения Jpeg с меньшим качеством (уровень сжатия зависит от настроек), а Flash-ки заменяются скриншотами с возможностью загрузить полных роликов. При этом вся разметка документа, а также динамика, реализованная c помощью Ajax и Js-скриптов, по-прежнему остается полностью работоспособной. Разработчики заверяют, что ни в коем случае не снифают и не логируют данные, а все SSL-соединения осуществляются без посредника, т.е. напрямую. Параноики хотя бы ночь могут спать спокойно :).

Трик 3: Opera Mini под виндой и лунксом

Вообще забавно: о существовании Opera знают даже те, у кого компьютера нет в принципе. Я не шучу: по статистике внушительную часть трафика на ресурсы социальных сетей генерируют пользователи мобильных браузеров и, прежде всего, Opera Mini. В этом опять же заслуга норвежцев: браузер не просто классно показывает странички, форматируя их для убого просмотра на небольшом экране телефона, но еще и в разы ускоряет серфинг. Секрет в том, что мобильный браузер также пропускает весь трафик через специальные промежуточные серверы, но в отличие от Opera Turbo, старательно сохраняющего исходную разметку страницу, перепаковывает во внутренний формат OBML (Opera Binary Markup Language). В результате преобразований разметка специально подгоняется под мобильное устройство, изображения сжимаются, а из всех JS-скриптов выполняются только самые простые. Но! В результате таких преобразований достигается сжатие трафика до 7-8 (!) раз. Это в среднем вдвое больше, чем при использовании Opera Turbo. Так может попробовать использовать Mini-версию на десктопе?

Opera Mini написана для мобильно версии Java (J2ME), поэтому для ее запуска на PC нам понадобится специальный эмулятор - MicroEmulator (www.microemu.org). Поскольку это Java-приложение, то работать оно будет на любой платформе: Windows, Linux, Mac OS. После запуска эмулятора на экране появится изображение импровизированного телефона. Размер дисплея на телефоне строго зафиксирован, что естественно она не устраивает. К счастью, через настройки можно указать устройство, размеры экрана которого варьируются как угодно: "Options -> Select device -> Resizable device -> Set as default...". Далее нам понадобится апплет самой Opera Mini, а именно .jar и .jad файлы которые нужно скачать с ru.opera.com и скормить эмулятору через меню "File -> Open MIDLet File". Все: после этого изображение будет запущено. Единственное - нужно убедиться, что апплету разрешен доступ в сеть: "Options -> MIDlet Network access".

Можно попробовать зайти на yandex или xakep.ru и.. растроится потому, что текст по-прежнему располагается внутри маленькой области, даже не смотря на размер экрана. Для того, чтобы пофиксить придется обратиться к продвинутым настройкам Opera, набрав в адресной строке "opera:config". После включения опции "Fit to screen" разметка займет всю доступную область виртуального экрана. Но опять незадача: форматирование выполняется для мобильного телефона, а все-таки хочется работать с сайтом в изначальном его исполнении. Для этого лезем уже в стандартные настройки браузера и отключаем там опцию "Mobile view". После этого странички будут выглядит почти точно так же, как и в обычном браузере. Правда, без наворотов с Ajax и Flash.

Трик 4: Осваиваем OBML

И все-таки пускать в ход эмулятор, чтобы, в конце концов, использовать решение, адаптированное для удобства работы с телефона, - не самый удачный вариант. Вот если бы сжатие через сервера Opera Mini Было доступно в обычном браузере... Но почему бы и нет? Необходим лишь специальный посредник, который будет преобразовывать документы в Opera'овком формате OBML в обычный HTML, доступный для любого браузера. В качестве такого посредника отлично будет выступать Opera Mini Proxy (ompd-proxy.narod.ru).
Как несложно догадаться из названия, утилита представляет собой локальный прокси-сервер, поэтому для ее использования нужно в настройках браузера указать проксик - по умолчанию 127.0.0.1:8080. Opera Mini Proxy отправляет все запросы на сервера Opera Mini, принимает ответ в формате OBML и на лету преобразует его в привычный HTML. Просто как дважды два.

На том же 8080 порту запускается веб-интерфейс для управления приложений. Конфиг ничего не стоит отредактировать вручную через .conf файл, но через веб-интерфейс можно создать профайлы с разными настройками. Обратиться к нему очень просто, набрав в адресной стороке: "127.0.0.1:8080". Новый аккаунт создается с помощью кнопки "Create new OM Account", рядом с которой находится поле для указания имени пользователя. Для каждого профиля есть несколько важных настроек:

  • HTML page width - задает ширину экрана, на котором будет отображаться текст. С этим значением нужно поиграться так, чтобы получить наиболее подходящий для твоего разрешения вариант;
  • Memory size in kb - задает максимальный размер блока, загружаемый за один раз. Рекомендую увеличить стандартное значение (3000) в 2-2.5 раза;
  • OM protocol version - используется для указания протокола. Рекомендую значение - 3.

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

Трик 5: Урезаем все лишнее

Еще одно простое правило того, как можно сэкономить трафик - не загружать то, что тебе не нужно. Нет смысла оплачивать просмотр рекламы, закачивая пачками многочисленные баннеры, всплывающие окошки и Flash-ки. Тем более что можно в мгновение отключить все сразу. Выше всех похвал является утилита Ad Muncher (www.admuncher.com). Всего в 400 Кб программы умещается настоящая гроза для рекламы в любом ее проявлении. Правила блокировки задаются специальными фильтрами, с помощью которых можно наладить удаление не только стандартных баннеров и popup'ов, но и «тяжелой» Flash-рекламы. Да что там - ничего и налаживать не надо. В Ad Muncher по умолчанию встроена проработанная база регеспов, которые успешно расправляются с 98% рекламы. Редкий случай, когда что-то остается им незамеченным. Еще один важный плюс - программа автоматически перехватывает запросы из любого браузера, и ее не надо прописывать как локальный прокси. Просто установил - и все сразу работает.

Единственное, с чем приходится мириться - это платностью приложения. Впрочем есть и другие эффективные варианты. Плагин Adblock Plus (https://addons.mozilla.org/en-US/firefox/addon/1865) я устанавливаю одним из первых для своего Firefox'а. После установки, необходимо настроить правила, которые будут использоваться для фильтрации рекламы. Такие правила обновляются автоматически: необходимо лишь оформить подписку на нужный набор регеспов: для России предусмотрен особый вариант.

Трик 6: Кэш - наше все

Браузеры достаточно хорошо кэшируют просматриваемые страницы, однако, некоторые вещи почему-то обходятся стороной. К тому же, надо помнить, что у каждого браузера - кэш свой. А я, по правде говоря, постоянно пользуюсь несколькими браузерами: Firefox для обычной работы и Google Chrome для запуска веб-приложений. Поэтому крайне полезным является установка добротного кэширующего проксика. Отличным вариантом является HandyCache (www.handycache.ru) от нашего отечественного разработчика. Эта бесплатная программа, которая экономит трафик за счет кэширования, ускоряет загрузку страниц (локальных естественно), блокирует рекламу и позволяет в автономном режиме (без подключения к Инету) просмотреть любые посещенные ранее сайты. HandyCache гибко настраивается и в зависимости от URL (адреса) и типа файла (расширения) может или брать его из кэша, или всегда из Инета или руководствоваться наличием на сайте более новой версии файла, а может вообще блокировать его загрузку (рекламу и прочее нежелательное содержимое сайтов) - и это далеко не весь список возможных действий. К тому же его можно использовать в связке с компрессором, указав последнего в качестве прокси-сервера.

Еще один хитрый трик - кэширование DNS-запросов, эффект от которого особенно сильно заметен на медленных соединениях. В случае GPRS-коннекта DNS-резолвинга может занять секунду, а то и больше. Это время можно легко отыграть, если заблаговременно сохранять IP-адреса всех нужных хостов. С этим отлично справляется специальный модуль в файрволе Outpost (www.agnitum.ru) или специальная программа Acrylic (http://sourceforge.net/projects/acrylic/).

Маленький совет в завершение: если приезжаешь в чужой город и тебе нужен нормальный стабильный коннект, попробуй найти Wi-Fi спот. Проще всего это сделать, воспользовавшись сервисами wifi.mail.ru, wifi4free.ru. В моем случае кафе с бесплатным Инетом находилось в соседнем доме, пока я уверенно отдавал денежки за слабый GPRS-Инет :).

Как искуственно ограничить коннект

В, общем-то, чтобы попробовать эту фишку в действии, не дожидаясь полевых условий, установи программу NetLimiter Pro (www.netlimiter.com). NetLimiter предоставляет возможность шейпера, позволяя ограничить для отдельных приложений пропускную способность или вообще закрыть им доступ в сеть. Режимов очень много: можно, например, равномерно распределить трафик по всем приложениям, а можно выставить максимальный приоритет для какого-то одного.

В случае с Mac OS реализовать искусственное ограничение скорости можно, используя такую штуку как pipe. С помощью ipfw и pipe можно ограничить пропускную способность, причем не всего канала, а на конкретных портах. Например, следующей командой мы создаем pipe с ограничением 15 Кб/c наружу:

sudo ipfw pipe 1 config bw 15KByte/s

Далее надо присоединить этот папцп на исходящий трафик на 80 порт:

sudo ipfw add 1 pipe 1 src-port 80

Таким образом, нужно всего две команды, чтобы ограничить скорость коннекта твоего браузера. После всех экспериментов пайп удаляется из системы командой:

sudo ipfw delete 1

Коммерческие компрессоры трафика

В сети существует немало платных сервисов, которые за небольшую денежку готовы предложить то, что toonel.net предлагает бесплатно. А именно - сжатие на лету всех передаваемых данных. Разница лишь в том, что эти сервисы имеют достаточные мощности, чтобы удовлетворять потребностям пользователя, в то время как бесплатные решения проседают, не справляясь с нагрузкой. Можно отметить сразу несколько вариантов: fasTun (astun.ru), Web2zip (www.web2zip.com), CPROXY (www.cproxy.com), Gzip Proxy (www.gzip-proxy.ru), WebCompressor (www.webcompressor.ru), TrafficCompressor (www.tcompressor.ru). Причем некоторые из них предоставляют специальный бесплатный режим, ограничения которого, однако, не позволяют расматривать их всерьез. Я же на своем опыте достаточно долго использовал ускоритель Globax (globax.biz) во время когда основным каналом связи у меня был спутниковый Инет, а в качестве обратного канала выступал GPRS. Без использования ускорителя серфинг вызывал уныние: качает быстро, но серфится с дикими задержками. После освоения Globax'а создавалось ощущение, что пользуешься вполне привычным ADSL, плюс ко всему экономишь львиную долю трафика. Могу смело рекомендовать этот сервис и просто для медленных соединений. Есть вполне доступные тарифы: например, 2$ за гигабайт трафика.

Но и тут есть хинт. По глобаксу ты оплачиваешь трафик несжатый. Поэтому разумнее не пускать через ускоритель то, что не будет сжиматься, а пускать такие соединения напрямую. С помощью расширения FoxyProxy (foxyproxy.mozdev.org) легко создается правило, которые несжимаемые файлы закачивает через другой прокси, а остальное пускает через глобакс. Правило задается с помощью регеспа, например, так:

.*.(gif|ipg|jp(e)?g|png|swf|mp3|mp2|mpeg|avi|xpi|zip|rar|7z|exe|cab|wmv|wma|ogg)

WWW

DVD

Программы и улититы из статьи ты обязательно найдешь на DVD диске.

INFO

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

Содержание
ttfb: 8.1710815429688 ms