Информационные технологииStfw.Ru 🔍

Честный обман провайдера

Как сэкономить дорогие мегабайты трафика Крис Касперски
🕛 28.08.2008, 14:43
Интернет редко бывает хорошим и дешевым одновременно, что толкает многих хакеров на незаконные действия, зачастую заканчивающиеся условной судимостью. Но мы пойдем другим путем - загрузим Google Web Аccelerator и путем ковыряния в настройках выжмем из него все, на что он только способен (в том числе заставив его работать на официально не поддерживаемой Опере), сэкономив как на модемном подключении, так и на DSL. А в довесок рассмотрим еще парочку способов посидеть в инете на халяву, за которые, правда, можно получить по голове!

Презент от Google

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

И вот сейчас доступ открыт вновь (правда, неизвестно, надолго ли), так что лови свой шанс! Google Web Аccelerator (далее по тексту для краткости называемый просто GWA), действительно, реально увеличивает скорость работы с web'ом или экономит трафик (именно «или» - согласно основному правилу оптимизации, за все приходится платить, и, улучшая одни показатели, мы неизбежно ухудшаем другие). И хотя GWA значительно отстает от своих коммерческих конкурентов (о которых мы поговорим в отдельной врезке), он бесплатен, что для многих является решающим фактором.

Установка GWA на свой компьютер

Заходим на www.google.com, видим там ссылку «more», щелкаем по ней, в открывшемся окне выбираем «even more» и среди множества проектов, в самом низу, находим затерявшийся Web Accelerator: http://webaccelerator.google.com. По завершении самой установки в системном трее появляется изображение настольных часов аналогового типа, такие же точно часы появляются и на панели Firefox или IE (замечу, что Opera официально, но только официально, не поддерживается). Сразу же после запуска Firefox/IE, персональный брандмауэр (который в наше неспокойное время должен быть установлен на каждой машине) тут же завопит, что приложение GoogleWebAccClient.exe ломится в сеть на sb.google.com [66.248.93.93] по 80-му порту. Вот это тот самый акселератор и есть! Попытка блокировки доступа делает работу Firefox/IE невозможной вообще, поскольку отныне и вовеки веков они входят в сеть не напрямую, а через GoogleWebAccClient.exe, так что нажимаем «Yes».

Следом за GWA в сеть ломится сам браузер, и все по тому же самому адресу и порту - sb.google.com:80, вынуждая нас давить «Yes» еще раз. Фактически, sb.google.com:80 выступает в роли proxy-сервера, только очень хитрого и… местами даже коварного, но не будем забегать вперед.

Как это работает

Алгоритмы, заложенные в GWA, никакого секрета не представляют и в тех или иных вариациях используются практически во всех акселераторах, причем в значительно большем объеме, чем в GWA, который реализует следующий перечень возможностей:

1. GWA выступает в роли быстрого proxy-сервера: как известно, пропускная способность сетевых каналов (как на dial-up, так и на DSL) практически никогда не достигает 100% загрузки, поскольку большинство web-серверов сильно перегружено и они обслуживают пользователей не одновременно, а по очереди. Передав «квант» информации, сервер ставит пользователя в очередь и принимается за следующего, причем величина «кванта» определяется не только (и не столько) размером блока данных, но и временем, требующимся на его пересылку. Следовательно, чем шире у нас канал, тем больше информации мы может выкачать за один «квант» и тем выше эффективная скорость скачки. GWA, располагающий распределенной сетью серверов с толстыми каналами, довольно резво стягивает информацию даже с перегруженных серверов, отдавая ее нам без задержек, в результате чего КПД нашего канала приближается к 90%, что очень хорошо.

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

3. GWA оптимизирует параметры соединения: TCP/IP - очень сложный протокол с множеством тонких настроек, не учитываемых ни операционной системой, ни браузером, ни чем-либо еще. Правда, существуют специальные утилиты, типа MTUSpeed, позволяющие настраивать параметры TCP вручную, но… прежде чем достичь реального ускорения, с ними приходится повозиться. А GWA настраивает оптимальные параметры автоматически, уменьшая количество потерянных пакетов (которые сервер вынужден передавать повторно) и обеспечивая так называемый «быстрый старт». Без последнего протокол TCP довольно медленно раскачивается, и, прежде чем будет достигнута номинальная пропускная способность, запрошенная web-страница уже успеет загрузиться, в результате чего чем меньше размер страницы, тем с меньшей скоростью она качается. Правда, на файлах размером в несколько десятков мегабайт это практически никак не сказывается.

4. GWA осуществляет предвыборку (prefetching): основываясь на данных популярности различных web-страниц, полученных не без помощи закладок, изначально встроенных в Оперу и Горящего Лиса, он выполняет упреждающую загрузку наиболее популярных ссылок с текущих страниц. То есть пока мы читаем web-страницу, вникая в материал, GWA активно качает остальные страницы по ссылкам, вероятность перехода на которые максимальна. Если GWA предугадает маршрут нашего дальнейшего web-путешествия, скорость открытия уже загруженных страниц нас просто сразит наповал. Вот это акселерация! Вот это ускорение! На модемном соединении такой подход экономит уйму времени (а значит, и денег), правда, при условии, что web-серфинг не сочетается с фоновой скачкой файлов в ReGet'e. А вот на DSL… ой, а вот на DSL предвыборка способна кинуть нас на трафик, обув на весьма недетские бабки. Ведь никакой гарантии, что мы зайдем именно на предвыбранные страницы, у нас нет, а платить за них все равно придется. Поэтому предвыборку лучше сразу же отключить, но даже при этом GWA будет отображать ссылки, которые бы он хотел загрузить. И это будут не просто ссылки, а наиболее популярные ссылки, на которые щелкают все остальные пользователи, - неплохое средство упрощения навигации по неизвестному сайту, экономящее не только время, но и трафик.

5. GWA передает только изменения страниц: допустим, мы имеем страницу размером в 1 Мб, владелец которой неожиданно изменил 10 байт в нескольких местах (исправил орфографические ошибки, например). В обычной ситуации мы были бы вынуждены повторно скачивать весь этот мегабайт целиком, а GWA позволяет передать лишь изменения, то есть по нашему каналу скачается 10 байт, плюс накладные расходы на организацию передачи. Экономия времени и трафика налицо!

6. Поддержка докачки: при нестабильной связи и частных разрывах, серверы, не поддерживающие докачку, становятся настоящим исчадием ада, но… только не с GWA, который заглатывает файл внутрь себя и затем отдает нам. С докачкой! Экономя и время, и трафик!

7. Сжатие web-содержимого: подавляющее большинство современных web-серверов и браузеров поддерживают сжатие текстовых web-страничек в формате gzip, экономя и скорость, и трафик, однако до сих пор находятся серверы, не поддерживающие этот режим, и вот тут-то GWA оказывает нам существенную помощь. Правда, учитывая незначительную долю таких серверов, много сэкономить не получается.

Оптимальная настройка

Щелкаем по часам, в появившемся меню выбираем «Preferences» (или набираем в адресной строке Горящего Лиса/IE следующий URL: http://127.0.0.1:9100/preferences), после чего получаем доступ ко всем настройкам.

Модемное соединение

Первым делом переводим радиокнопку «Specify your type of Internet connection» в положение «Dialup», активируем предвыборку страниц («Enable Prefetching») и подсвечивание уже предвыбранных страниц двойным подчеркиваем, как это показано в example link, приведенном в качестве образца. Это поможет нам просматривать страницы в том порядке, в котором их загружает GWA и который далеко не всегда совпадает с порядком их следования на текущей странице (напоминаем, что предвыборка осуществляется на основе рейтинга популярности). Для достижения максимальной скорости переводим радиокнопку «Select how frequently Google Web Accelerator checks for newer versions of cached pages» в положение «Check for newer versions if the content is likely to change», чтобы GWA передавал только реально измененные страницы. Однако следует помнить, что этот механизм не застрахован от ошибок и в некоторых случаях GWA не замечает, что страница была изменена, показывая нам старую версию. Поэтому для надежности лучше все-таки оставить эту радиокнопку в положении «Always check for newer versions (Recommended)», в котором она и находилась по умолчанию.

Сохраняем параметры кнопкой «Save Preferences» и начинаем блуждать по Сети. Часы на панели инструментов вращают стрелкой, отображая текущую скорость скачки и показывая сэкономленное время, рассчитываемое по недокументированному алгоритму, поэтому этим цифрам нельзя доверять. Но все же это не мешает получать удовольствие от наблюдения за ними. Для просмотра более детальной статистики выбери в контекстом меню GWA пункт «Performance Data» (или набери «http://127.0.0.1:9100/races» в Горящем Лисе или IE), после чего откроется специальное окно, в котором можно узнать, сколько времени удалось сэкономить GWA. Правда, как обстоят дела с экономией трафика, остается только гадать.

DSL-соединение

Радиокнопку «Specify your type of Internet connection» оставляем в положении по умолчанию - «DSL». Вырубаем предвыборку, снимая галочку с «Enable Prefetching», чтобы не попасть на трафик, но оставляем взведенной галку «Highlight Links to Prefetched Pages», чтобы популярные ссылки сразу же бросались в глаза (это работает не на всех сайтах). Положение «Select how frequently Google Web Accelerator checks for newer versions of cached pages» определяется в соответствии с личными предпочтениями. Позиция «Always check for newer versions» дает стопроцентную гарантию, что мы увидим страницу «как она есть», а «Check for newer versions if the content is likely to change» нехило экономит трафик с некоторым риском пропуска последних изменений.

Нажимаем на «Save Preferences» и… наслаждаемся «спидометром» пока не надоест. А когда надоест - тут же возникнет естественное для всех хакеров желание: распотрошить GWA и посмотреть, что у него внутри.

Как технически устроен GWA

Технически GWA представляет собой расщепленный proxy-сервер, одна половина которого работает на сервере sb.google.com, другая же устанавливается локально и открывает порт с номером 9100, через который работает IE, Firefox и любая другая программа. Для следующих экспериментов нам потребуется собственный web-сервер, ведущий подробные логи (рекомендуем бесплатный для граждан России small-http, который можно скачать с www.smallsrv.com), любой достойный TCP/IP-dumper и персональный брандмауэр (я использую SyGate Personal Firewall - брандмауэр и TCP/IP-dumper в одном флаконе; до версии 4.2 он был бесплатен, а теперь требует регистрации). Также пригодится любая утилита для мониторинга открытых портов: от стандартной netstat, запущенной с ключом «-a», до TCPView Марка Руссиновича (www.sysinteals.com).

Собрав все инструменты, необходимые для вскрытия, заходим в каталог \Program Files\Google\Web Accelerator и видим там два файла. Первый - GoogleWebAccClient.exe - это «сердце» акселератора, представляющее собой локальный proxy-сервер с открытым 9100-м портом для общения с браузером, взаимодействующий с удаленным GWA-proxy сервером sb.google.com по стандартному 80-му порту. Второй файл - GoogleWebAccWarden.exe - реализует «спидометр» в системном трее и на панели управления, общающийся с GoogleWebAccClient.exe через средства межпроцессорного взаимодействия, а конкретно - через socket'ы. Если снести этот процесс (в «Диспетчере задач» или FAR'е), «спидометр» тут же исчезнет, но акселератор продолжит работать с ничуть не меньшим усердием. Кстати, говоря, GoogleWebAccWarden.exe является пусковым файлом, и если его остановить, а потом запустить повторно, то мы получим две копии GoogleWebAccClient.exe, ведущие себя довольно непредсказуемым образом.

Теперь ненадолго отключим GWA и зайдем на свой собственный http-сервер, роль которого в данном случае исполняет http://nezumi.org.ru, недавно переведенный в орбитальный режим, то есть запущенный на круглосуточную работу. В лог-файле немедленно появляется следующая запись, представляющая запрос «GET / HTTP/1.1», посланный Firefox и предписывающий серверу возвратить главную страницу.

А теперь запустим GWA и попробуем зайти на сервер еще раз. Я даже не хочу приводить то безобразие, которое отобразилось в логах моего web-сервера! Во-первых, теперь запросы идут не от того узла, где установлен Лис, а совсем из другого места - 72.14.192.1. Этим местом, как нетрудно догадаться, является один из серверов, входящих в распределенную сеть GWA, и его мы можем использовать как proxy. Вот только… скрыть свой истинный IP все равно не получится, поскольку GWA явно прописывает его в заголовке: «X-Forwarded-For: 83.239.33.46», также указывается подлинная строка идентификации браузера вместе с остальными параметрами.

Во-вторых, один и тот же запрос «GET / HTTP/1.1» выполняется дважды - один раз для Горящего Лиса, второй - для удаленного кэш-сервера GWA. Таким образом, интенсивное использование GWA многими миллионами пользователями приводит к повышенной загрузке web-серверов по всему миру. Радужная вырисовывается перспектива, не правда ли?!

В-третьих, при активной предвыборке, GWA тут же начинает загружать k_hiteev pack.zip (сборник из 96 статей), а он весит почти 37 Мб. Обрати внимание на нестандартное поле «X-moz: prefetch» в заголовке HTTP-запроса. И вся эта информация насильно впихивается зашедшему на сервер пользователю, не дожидаясь пока он сделает запрос!!! А по широкому DSL-каналу мегабайты пролетают очень быстро…

Предвыборка - это понятно. Непонятно другое. Как и почему GWA выбрал именно эти два архива из более чем 80-ти остальных файлов, валяющихся на сервере?! Да очень просто! По критерию популярности. Закладки, встроенные в Горящего Лиса и Оперу, нашептали GWA, что именно качают пользователи с мыщъх'иного сервера чаще всего, и мыщъх’иные логи эту информацию полностью подтверждают!!!

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

Независимо от активности предвыборки, GWA сохраняет считанные страницы в кэш-папке Горящего Лиса или IE, то есть работает как обычный кэш-proxy сервер, только не простой, а кривой. Лучше бы он сохранял их в отдельной папке, тогда бы при просмотре одних и тех же страниц из-под разных браузеров мы бы экономили на трафике.

Еще один факт, скорее относящийся к области курьезов, но все-таки достаточно интересный сам по себе и достойный описания. Сразу же после установки GWA, на узел сервера обрушилось большое количество UDP-пакетов, направленных на 1030-й порт (сервис обмена сообщениями), отсекаемых брандмауэром, но нервирующих своим рекламным содержимым при просмотре логов. К тому же, несмотря на все блокировки, это входящий трафик, за который приходится платить.

Заключение

И все-таки - стоит использовать GWA или нет? Вопрос не имеет однозначного ответа. О том, что GWA представляет собой лучший бесплатный акселератор, никто не спорит и спорить не собирается, но, по сравнению с коммерческими, он пока отдыхает. Тот же www.propel.com позволяет экономить гораздо больше мегабайт, правда, ценою потери качества картинок, которое в некоторых случаях важнее денег.

Как прикрутить GWA к Opera?

Официально GWA поддерживает только браузеры Firefox и IE, но при желании его можно заставить работать с любой другой программой, например с Оперой. Ведь в основе GWA лежит локальный proxy-сервер, а всякие там «спидометры» на панели инструментов - это сделано исключительно ради красоты.

Короче, берем Оперу (любой версии), заходим в меню «Tools», выбираем пункт «Preferences» (или нажимаем <CTRL-F12>). В открывшемся диалоговом окне переходим к вкладке «Advanced», щелкаем по строке «network», давим на кнопку «proxy servers» и в строке HTTP пишем: «127.0.0.1, port 9100», не забыв взвести напротив него галочку. Также можно задействовать «HTTP 1.1 for proxy», а вот HTTPS проксировать не надо, все равно GWA (по соображениям секретности) не поддерживает этот протокол.

Серьезный конкурент Google’а!

Главным, можно даже сказать, фундаментальным, недостатком GWA является его органическая неспособность сжимать графические изображения, а ведь именно на них приходится львиная доля сетевого трафика. Коммерческий акселератор www.propel.com разработал специальный алгоритм сжатия, позволяющий уменьшать размер jpeg-файлов (которые, как известно, практически не поддаются сжатию) в 15 раз, сохраняя при этом приемлемый уровень качества (то есть можно смотреть без содроганий, поскольку изображение остается субъективно приятным). Акселератор поддерживает практически все существующие на данный момент браузеры (IE, Netscape, Opera, Mozilla и Firefox) и даже дает 7 дней пробного доступа!

Бесплатный DSL: один из способов

Инсталлируя GWA на своем компьютере, мы тем самым устанавливаем локальный proxy-сервер и открываем 9100-й порт, необходимый для его работы. Сразу же возникает вопрос: а как насчет безопасности?! Вдруг какой-нибудь умник пропишет наш IP и 9100-й порт в свойствах своего браузера и будет гнать через нас трафик, за который нам придется платить? Атаки такого типа очень широко распространены и встречаются повсеместно. Как правило, внутрисетевой трафик (трафик внутри сети провайдера) стоит ощутимо дешевле внешнего или вообще не тарифицируется!

В это же самое время многие клиенты устанавливают у себя proxy-серверы, обслуживающие сеть организации или даже домашнюю локалку. Грамотный администратор первым делом составляет список разрешенных IP (принадлежащих, естественно, его локалке) или указывает, с каких сетевых интерфейсов разрешен доступ. Однако если администратор - лох, то сервер остается открыт для всех желающих! Обнаружив жертву простым сканированием (в любом сканере типа nmap задаем диапазон IP своего провайдера и ищем машины с открытым 3128-м или 8080-м портом), халявщик указывает найденный IP в адресе proxy-сервера своего браузера и начинает гнать трафик, оплачиваемый из чужого кармана. Естественно, скрыть свой IP ему не удается, и дело обычно заканчивается мордобоем. Правда, в случае действительно крупных провайдеров, локалка которых покрывает целый край (например, Краснодарский), пионер может территориально находиться за сотни километров, что затрудняет процедуру разборки.

А как обстоят дела с безопасностью GWA? Анализ показывает, что он разрешает доступ только с адреса 127.0.0.1, то есть непосредственно с самой локальной машины, и блокирует попытки подключения извне. Правда, насколько надежно он это делает и не содержится ли в нем ошибок переполнения, неизвестно, поэтому заткнуть порт 9100 на персональном брандмауэре будет совсем нелишне. Кстати говоря, какой идиот-разработчик придумал такие ограничения?! Нормально настроенный акселератор должен допускать к себе остальных членов локальной сети, если администратор этого хочет, он ведь неспроста этого хочет! Локальный кэш - великое дело, особенно если разные узлы обращаются к одним и тем же серверам, как чаще всего и бывает. Даже в домашней сети простейший кэширующий прокси (вроде уже упомянутого small-http) экономит трафика больше, чем GWA! Еще одна проблема, связанная с GWA, - к нему могут обращаться любые программы (а не только браузер), в том числе и зловредные утилиты, ворующие информацию с компьютера и скрытно передающие ее через сеть. В обычной ситуации их остановит брандмауэр, но в случае с GWA - нет.

Бесплатный DSL: ICMP-инкапсуляция

Открою тебе небольшой секрет. Некоторые операторы тарифицируют только TCP/UDP-трафик, но не обращают внимания на ICMP. То есть ты можешь сколько угодно пинговать www.xakep.ru, генерируя тем самым кучу трафика, но с тебя за это не снимут ни копейки. Вообще ICMP (Internet Control Message Protocol) предназначен для передачи контрольных сообщений. В случае пинга - это сначала эхо-запрос (с твоей стороны), а затем эхо-ответ (со сторны сервера). Однако протокол позволяет вставить в сообщение любую информацию и передать ее в сеть - и для провайдера это будет все тот же ICMP! Понимаешь? Мы можем поднять ICMP-тоннель, пустить через него весь трафик, и тогда передача данных будет совершенно бесплатной. Причем никто не сможет наехать и предъявить иск за взлом, поскольку мы вправе использовать все услуги, которые только предоставляет оператор! Другое дело, что за это вполне могут отключить, потому лучше не увлекаться и гигабайтами не воровать.

Все, что нам потребуется, - это специльная программа ptunnel (www.cs.uit.no/~daniels/PingTunnel), которую нужно установить на никсовый шелл. Где его взять? Лучше всего, конечно, банально купить. Все удовольствие обойдется в $5-10 в месяц, а это, по-моему, вполне достойная цена за халявный трафик. Но если с финансами ну совсем туго, можно проштудировать списки бесплатных шелл-хостеров (www.freeshell.com) и найти там подходящий вариант. Затем на твоем компе поднимается клиентская часть ptunnel’а, которая работает в виде обычной локальной прокси. Тебе останется только прописать ее в настройках браузера: адрес 127.0.0.1 и порт, на котором она работает.

WWW

webaccelerator.google.com - главная страница Google Web Accelerator;

www.cs.uit.no/~daniels/PingTunnel - о том, как получить бесплатный трафик за счет ICMP-тоннеля.

Интернет и сети   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉