Pull to refresh

Google Cache Browser — просмотр кэша без мучений

Reading time2 min
Views7.8K
Бывает так, что нужно походить по страницам сайта, который внезапно лёг или вовсе закрылся, и испокон веков нас здесь выручает Google с его поисковым кэшем. Одна беда — «походить» в этом случае превращается в сплошное мучение: посмотреть страницу, скопировать адрес ссылки, по которой хочется пройти, вставить в поисковую строку и добавить префикс «cache:». Многовато действий ради одного перехода по ссылке. Вот ссылка на решение этой проблемы для нетерпеливых: GCB 2.0.

Google Cache Browser 1.0 и его проблемы


Несколько лет назад я уже пытался решить эту проблему, и даже создал небольшой сервис Google Cache Browser, который работал по принципу прокси: скачивал страничку кэша, подменял в ней все ссылки так, чтобы они снова вели на сам сервис, и в таком виде отдавал в браузер пользователю. Однако, он обладал несколькими существенными недостатками:
  1. Он порядочно расходовал трафик.
  2. Регулярно попадал в бан гугла.
  3. В меньшей степени, но все равно заметно грузил процессор (применять регулярные выражения к большим страницам — неблагодарное занятие).
  4. Несмотря на все мои ухищрения, он подменял не все ссылки. На некоторых сайтах они были оформлены так, что диву даешься. О валидности этого HTML и речи не шло.

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

Google Cache Browser 2.0 и JS-фу


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

Основной проблемой было то, что для моих целей нужно было запускать мой JavaScript в контексте домена webcache.googleusercontent.com, и примерно неделю назад я заметил, что кэшированные страницы по-прежнему грузят и выполняют свои джаваскрипты, при чем не их кэшированные версии, а актуальные версии с сайта. С этого момента осталось только загнать в кэш гугла подходящую страницу с подключённым JS и начать работать в контексте домена гугла.

Все это довольно удачно совпало по времени с SOPA и временным отключением хороших сайтов вроде Википедии, поэтому вчера вечером я таки взялся и довел сервис до ума: теперь он функционирует полностью в браузере (ни единого серверного скрипта), в последних версиях Firefox, Chrome, Opera и в IE8. Проверять в других браузерах у меня времени не хватило, так что шлите баг-репорты! :-)

И, да, последняя плюшка: все исходники сервиса я опубликовал на GitHub, на условиях GPLv3. Feel free to fork!

Итоги


Человечество осчастливлено возможностью худо-бедно читать Википедию в течение сегодняшнего дня, а я получил массу удовольствия от применения уже подзабытого JS-фу, поскольку на работе я большую часть времени занимаюсь серверной стороной.

ToDo


Как это обычно бывает, осталось ещё немало доработок, которые прекрасно дополнили бы сервис. Вот наиболее интересные из них:

  • Сделать букмарклет для сервиса. При том, букмарклет будет уметь как перекидывать на кэшированную версию страницы, так и довешивать функционал на страницу из кэша, если она уже была открыта.
  • Побороть некоторые спонтанные глюки с вёрсткой.
  • Подстраховаться от выпадания страницы-точки входа из индекса.
  • Более тщательно протестировать кросс-браузерность.
  • Возможно, перенести сервис на отдельный, более благовидный домен.

Кстати, вы вполне можете приложить к этому руку — исходники-то лежат на ГитХабе ;-)
Tags:
Hubs:
+25
Comments20

Articles

Change theme settings