8 июля 2009 в 17:17

Экономим на GPRS-трафике с помощью Opera Mini Proxy

Не так давно мне предстояло путешествие по рабочим делам в соседний регион. И, так как рабочие дела требовали постоянного использования интернета, пришлось задуматься о том, как можно сэкономить на недешевом роуминговом GPRS-трафике (UPD: способ также пригоден для скачивания прона без ведома родителей обхода ограничений корпоративных firewall).

Первое, что пришло в голову (спасибо, Хабр) — использовать Opera Turbo. Напомню вкратце: турбо — это новый режим бета-версий браузера Opera, позволяющий гнать трафик через их сервера, которые сжимают html и перепаковывют изображения в jpeg с высокой степенью сжатия (кроме того, flash-ролики заменяются на их скриншоты с возможность загрузить оригинал по клику мышки), при этом сохраняется вся разметка документа, и все скрипты работают, как положено.

Использование Opera Turbo позволяет снизить расходы трафика в 2-3 раза (экспериментально проверено на просмотре страниц википедии). Хорошо? Хорошо, но мало. Попробуем сжать еще больше.

Следующим шагом была попытка использовать Opera Mini на десктопе. Как известно, opera mini тоже работает через сжимающие трафик сервера, но на этот раз html-страницы перепаковываются во внутренний формат оперы мини obml, разметка при этом изменяется «под мобильное устройство», а javascript'ы работают только выборочно (изображения тоже сжимаются).

Экономия трафика гораздо более ощутимая, сжатие примерно в 8 раз (на том же примере с википедией). Но все-таки интерфейс mini не предназначен для desktop-использования. Есть ли возможность решить эту проблему? Есть.

Возможность называется Opera Mini Proxy (или же Opera Mini Proxy Daemon, ompd). Эта программа представляет собой локальный прокси сервер, который прописывается в настройках браузера и направляет весь трафик через сервера Opera Mini, на лету декодируя возвращаемый ими obml в привычный html.

Детали:

— Запуск — ompd.exe, он ничего не выдает и просто остается висеть «в фоне», обслуживая запросы.
— Все настройки — через веб интерфейс, localhost:8080 (эти же параметры нужно прописать в браузере, как адрес и порт proxy сервера).

Важные настройки:

— Сначала на странице настроек нужно нажать «Create new OM Account» (предварительно указав желаемое имя пользователя), и выбрать созданный аккаунт как рабочий в поле «OM account(cookies,etc.)».
— В поле «HTML page width» ставим в ширину физического экрана или ширину окна
браузера.
— В поле «memory size in kb» ставим 6000 (это влияет на то, как сервер будет
делить страницу на блоки, загружаемые за 1 раз. В 6000 главная страница хабра с
картинками помещается без разрезания).
— В поле «screen width» ставим 180 (больше = красивее, но картинки
пропорционально станут больше, а сжатие меньше. На мой взгляд — 180 в
самый раз).
— «OM protocol version(2.xx or 3.xx)» я поставил в 3, т.к. местами быстрее и
разметка лучше выглядит.

Еще один важный момент — работа с картинками (настройка «image quality»):
«none» — показывать прямоугольник вместо картинки. По идее, при наведении мышки (нужно навести и подождать пару секунд) должна загружаться картинка (на практике у меня не заработало).
«text» — без картинок.
«low/high» — с картинками, определяет степень сжатия.
Под картинкой программа обычно добавляет прямую ссылку на оригинал картинки, но эта ссылка работает не всегда (например, в википедии иногда не работает).

Все, теперь можно пользоваться любимым браузером, сжимая данные через сервера Opera Mini. Напоминаю, сжатие ориентировочно в 8 раз, что в денежном эквиваленте (по дневным тарифам МТС) — где-то 7500 рублей на гигабайт.

Удачного серфинга.

UPD: Еще на эту же тему.
Иван Сорокин @unxed
карма
97,1
рейтинг 0,3
Пользователь
Похожие публикации
Самое читаемое

Комментарии (54)

  • +4
    Если в конторе перекрыли некоторые сайты, то так можно обойти запреты.
    • 0
      логично. обновил топик.
    • 0
      Для этого еще можно использовать Google translate — хороший прокси с американским ip)
  • +1
    С обходом нужно быть осторожней, на одном из форумов, где я общаюсь, айпишники норвежских серверов оперы забанены под ноль и приходится, если нечаянно зашёл с включеным Turbo, выключать, чистить куки и перезаходить.
    • +1
      Форум опероненавистников?
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Так Опера турбо вроде в хедерах пишет настоящий IP адрес.
      • 0
        Да нет, локальный форум, один из двух крупнейших городских. Просто так бороться с неумными пользователями, увы, оказалось легче.
  • 0
    Получается, это решение будет даже получше TrafficCompressor и других подобных утилит и сервисов, так?
    • 0
      Если не нужно пользоваться «тяжелыми» веб-сервисами с кучей Javascript'а (вроде gmail) — да.
    • 0
      Ну здесь лишь серфинг, а многие жмут из громоздского например игровой трафик.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Если есть желание, можно и переписать. Меня, в принципе, устраивает текущая версия. В инете уже разобрали obml по полочкам, так что принципиальных проблем не должно быть.

      По поводу неработоспособность можно попробовать связаться с автором.
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Как отключить режим просмотра «в одну колонку», хотелось бы просматривать как в обычном браузере?
    • 0
      Боюсь что никак — изначально сервера оперы мини все-таки сжимают html для просмотра именно в opera mini. В которой в одну колонку удобнее.
      • +1
        Подождите, но ведь мобильная опера способна показывать сайты полноценно (не в одну колонку)
        • +1
          Способна. Но Opera Mobile и Opera Mini — разные браузеры.
          • 0
            Я и имел в виду Opera Mini. Возможно на данный момент, просто не до конца изучен запрос, засылаемый на сервера opera, в котором возможно стоит флажок — отображать в одну колонку или полноценно.
            • 0
              Значит, я про такую возможность в mini не знал, прошу прощения. Скорее всего, версия протокола. ompd поддерживает 2/3, не факт, что 3 — это последняя версия.
        • 0
          вторая и третья опера мини не способны, увы
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Отличается. В turbo полноценно работает javascript и не меняется разметка. В mini разметка меняется, а js работает выборочно. А сервера одни или разные — не проверял. Физически могут быть и одни, а протокол наверняка разный.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    А что такое прона? порно? или я не понял?
  • 0
    Под пайтоном 2.6 не работает (а исходники автор прячет). Под 2.5 работает
  • 0
    Я в своё время пользовался специальной версией Opera Mini для ноутов, созданной по-моему нашими умельцами.
    Ей нужно было задать разрешение в пикселях и работала она на ура. Часто спасала на нетбуке, пока я не снёс XP, и не поставил Windows 7. Под семейство вистовских ОС она к сожалению не работает.
  • 0
    Поставил, настроил, потестил… выключил. Сжимает просто отлично. Но выглядят страницы настолько коряво… нет, возможно я что-то неправильно настроил, но если сравнивать вид страниц Хабра в Opera Mini и то, что получилось после сжатия и обработки этим демоном…
    В Opera Mini сохраняется структура комментариев, тут же получилась каша.
    • 0
      В OM 4.* страницы начали сохранять свою структуру, в более ранних же версиях всё было также, как вы сейчас видите.

      Читать с мобильника новости, статьи и форумы было в большинстве случаев вполне удобно, таблицы же, конечно, превращались в месиво.

      Добавление протокола OM 4 решило бы проблему.
  • +1
    судя по всему этот ompd можно использовать и на айфоне. кто-нибудь пробовал?
    • 0
      Насчёт айфона не знаю, но на N810 я его уже запустил. На ней как раз python2.5, так что ставится с пол-пинка.
      • +1
        о, у меня получилось на айфоне
        только что-то через настройки прокси не хочет
        а вот урлы localhost:8080/http://google.com работают
        • 0
          А можно чуть-чуть подробнее — как запустить всё это добро на iPhone?
          Спасибо заранее :)
          • +1
            установил openssh для доступа с компа и python. Все это через сидию
            скопировал версию для линукса с помощью scp
            зашел по ssh и сделал
            python ompd.pyc &
            все, работает
            • 0
              А можно вопрос по-другому сформулировать?

              :) возможно ли написать программу которая делала бы всё вышеуказанное, и затем оболочку для «неофициального Opera Mini браузера на IPhone»
              — я думаю что успех такого приложения в Cydia гарантирован.
              Цены на мобильный интернет во мноооогих странах оставляет желать лучшего.
              А тут — здравствуй экономия!

              :) спасибо за внимание.
              • +1
                да, идея правильная, но я тут вряд ли помогу )
                • 0
                  :( очень жаль…

                  А можно тогда попросить наглядную пошаговую инструкцию в картинках?

                  Я-то наверное справлюсь и по вышенаписанной инструкции, но хочеться этот эксперимент сделать доступнее для конечного пользователя :)

                  А там может энтузиасты найдутся…
            • 0
              Пробую делать всё по инструкции.
              Openssh и python скачал.
              «Cкопировал версию для линукса с помощью scp» — куда скопировал?

              По-какому адресу? Обыскался папку Python или её производные.

              Буду благодарен за пояснения.
              • 0
                в любую папку на телефоне. можно и без scp — есть же всякие программулинки для копирования файлов с компьютера
                • 0
                  Пробую запускать, получаю ошибки в строках 34 и 36, и команду на отключение…

                  Вы уж извините что веду себя как чайник, ну не сталкивался ни разу с Python и даже не программист я :(
                  • 0
                    [eugenys@eugenys U904p]$ ssh root@192.168.30.193
                    root@192.168.30.193's password:
                    mains-iPhone:~ root# ls
                    Library/ Media/ ompd/
                    mains-iPhone:~ root# cd ompd
                    mains-iPhone:~/ompd root# python ompd.pyc
                    OMPD is listening at port 8080
                    OMPD web config available at localhost:8080/

                    у меня так
                    а у вас? какие ошибки?
                    • 0
                      /private/var/root/Media/ompd$ python ompd.pyc
                      Traceback (most recent call last):
                      File «D:\PROJECTS\!_FINISHED\OMPD\source\ompd.py», line 977, in File «D:\PROJECTS\!_FINISHED\OMPD\source\ompd.py», line 965, in main
                      File "/usr/lib/python2.5/SocketServer.py", line 330, in __init__
                      self.server_bind()
                      File "/usr/lib/python2.5/BaseHTTPServer.py", line 101, in server_bind
                      SocketServer.TCPServer.server_bind(self)
                      File "/usr/lib/python2.5/SocketServer.py", line 341, in server_bind
                      self.socket.bind(self.server_address)
                      File "", line 1, in bind
                      socket.error: (48, 'Address already in use')
                      • +1
                        ну теперь все ясно — порт занят
                        либо прога уже запущена, либо порт конфликтует с системным процессом

                        для первого — перезагрузите телефон
                        для второго — подправьте порт в ompd.conf
                        • 0
                          После перезагрузки повторяю операцию:
                          При запуске python ompd.pyc всё замирает, далее «Host not answered for more than 15 seconds.» И молчит.
                          • 0
                            интернет есть на телефоне?
                            параметр om-connection-options.omserver = 80.232.117.10:80 не меняли?
                            • 0
                              Заработало (неясно после чего).

                              Ммм. Пока что немного криво, но конфиг я уже нашёл :)

                              Спа-си-бо за консультацию!

                              И +1 в карму ;-)
  • 0
    А какой у вас оператор? У Билайна, например, GPRS при нахождении вне домашней сети оплачивается по домашним тарифам.

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