Пользовательский JavaScript и CSS на мобильных устройствах27.01.2013 23:50

Хочется странного
Если вы регулярно посещаете с мобильного устройства (телефона, планшета) какие-нибудь сайты, и если у вас регулярно возникает желание изменить на них JS/CSS (но разработчикам сайтов вы по какой-то причине не сообщаете об этих желаниях), то статья вам может быть интересна.Возможно вас, как и меня, устроил бы вариант с прокси, который будет выполнять нужную вам подмену. Посмотрим, что можно сделать. :)
Давай покрасим холодильник…
В целом, спектр возможностей видится широкий: изменение «темы» сайты, размеров отдельных элементов, исправление ошибок JS/CSS, включение спрятанных возможностей (к примеру, на VK есть HTML5 плеер, который не активен), или отключение имеющихся, вроде заботливо расставленных на сайте «ховеров», из-за которых на мобильных устройствах по ссылкам приходится тыкать два раза, и т.д. Но увы, в стандартных браузерах большей части устройств нет механизмов для реализации UserCSS или
UserScript. Где-то работают букмарклеты (и я даже написал для себя около десятка), но процесс их «приготовления» нельзя назвать быстрым. В случае, если количество правок растёт (или уменьшается), постоянно править «закладурки» :) становится неудобно.В общем, как это можно решить:
- находим хостинг с Apache или nginx
- включаем там 2 расширения: прокси и что-то, что позволит менять проходящие через прокси файлы
- настраиваем заменялку так, чтобы она подключала к страницам нужные вам JS/CSS
- прописываем прокси на устройстве
- профит
У меня «хостинг» нашелся с Apache, на стоящем на подоконнике NAS, который, кстати, мне достался от QNAP (тайваньского!)
по программе бета-тестирования. Его я и мучил.
Injection
Включить прокси на Apache несложно, сложнее оказалось с подменой контента на лету. Расширений «на рынке» несколько:
mod_substitute,
mod_filter,
mod_sar. mod_sar я тупо не смог собрать, у mod_substitute были проблемы сначала со сжатыми страницами (пришлось собирать цепочку из фильтров распаковки-замены-упаковки, чтобы работало), потом обнаружилось что некоторые страницы он портил, причину «быстро» установить не удалось. Обновить Apache и все фильтры до последних версий (нового
mod_sed, к примеру) мне не светило (ядро и либы старые на NAS-е). В общем, остался я с mod_filter, в конфиг виртуального хоста вставил что-то вроде
ExtFilterDefine fixtext mode=output intype=text/html \
cmd="/opt/bin/sed 's|