RU EN DE
Illegal Systems Corporation

Обмануть большого брата...

NokiaN9 iPhone5 browser

   Оригинальный браузер Nokia N9 со смешным для русского названием grob, на самом деле построен на том же самом WebKit, который используется в браузере iPhone 5. В Nokia N9 версия AppleWebKit/534.13, а в iPhone 5 - AppleWebKit/534.46. Однако, браузер Nokia N9 не распознаётся большинством сайтов как мобильный из-за содержимого User-Agent.

Mozilla/5.0 (MeeGo; iPhone ) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13
Достаточно заменить UA на
Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Safari/7534.48.3
и внезапно Nokia N9 повсюду начинают признавать за iPhone 5, сайты становятся красивыми и нетормозящими.

Nokia N9 User-Agent iPhone 5 User-Agent

   Однако, не всё так просто, в настройках UA не поменяешь, исходники штатного браузера Nokia N9 разработчики почему-то не открыли, а отредактировать бинарник не получится, потому что браузер установлен из официального репозитория и при запуске проверяется aegis'ом. Если создать другой бинарник и попытаться запускать его, то в результате страницу всё равно откроет штатный браузер.

   В интернете есть несколько вариантов подмены браузера на пропатченный, но все они требуют openmode или inception для подмены бинарника на патченный. Но на самом деле горе-моддеры просто не поняли в чём проблема. Дело в том, что при открытии страницы браузер вызывает через D-Bus метод com.nokia.browser, а обработчиком этого метода прописан тот самый оригинальный grob, который без inception или openmode не заменишь. Кроме того, патченный браузер заменяет собой оригинальный, и иметь сразу два браузера не получится. Если понадобится старый браузер, то придётся переустановить пакет grob.

   Решение очень простое - надо заменить в бинарнике не только строчку с UA, но и строку с именем D-Bus метода, и написать свой .service для D-Bus. Название бинарника меняем на grob-ios, в бинарнике меняем UA на iPhone и com.nokia.browser на com.ios.browser и создаём файл /usr/share/dbus-1/services/com.ios.browser.service со следующим содержимым:

[D-BUS Service] Interface=com.nokia.MApplicationIf Name=com.ios.browser Exec=/usr/bin/invoker --type=m /usr/bin/grob-ios -prestart
Теперь при запуске grob-ios будет открывать страницы используя метод com.ios.browser, запуская при этом самого себя. И никакого inception или openmode не нужно.

   Оригинальный пакет grob_0.73.2-1+0m8_armel.deb был распакован, бинарник переименован и пропатчен, созданы файлы com.ios.browser.service и browser-ios.desktop, и всё это снова было запаковано в .deb. Теперь достаточно просто установить пакет grob-ios и в телефоне появится ещё один браузер, который никак не связан с штатным браузером и может работать параллельно и независимо. Настройки и кэш, правда, у браузеров общие, но это вполне приемлемо. Никаких inception или openmode не требуется.

 
 

©2005 Illegal Systems Corp. Designed by Stanson.