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

    Бывает так, что нужно походить по страницам сайта, который внезапно лёг или вовсе закрылся, и испокон веков нас здесь выручает 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


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

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

    Кстати, вы вполне можете приложить к этому руку — исходники-то лежат на ГитХабе ;-)
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 20
    • +2
      Википедию можно и так сегодня читать, предварительно заблокировав в браузере javascript для домена
    • +1
      Не проще ли было сделать userscript?
      • 0
        Во-первых, это было бы менее универсально.
        Во-вторых, не так интересно.

        Даже не знаю, какая причина была важнее :-)
      • +1
        Имя домена стрёмное только немного.
        • 0
          Какое было под руками, уж простите :-)
        • +1
          Красивое решение с работой сервиса из кэша гугла:)
          • +1
            Только что обнаружил один глюк. Если на странице есть код вида:
            LinkName

            То идет запрос в кеш javascript:ProcName() что в принципе не правильно.
            Так что для href надо отфильтровать чтобы не учитывал в начале javascript
            • +1
              Блин, хабр съел теги.
              Вот ошибочный случай:
              <a href='javascript:ProcName()'>Link Name</a>

              * This source code was highlighted with Source Code Highlighter.
              • 0
                Да, об этом я не подумал, учту.
                Похожая проблема происходит и с локальными ссылками типа
                <a href="#hash">...</a>


                Сегодня вечерком буду бороться с такими недочётами.
            • 0
              Здравствуйте, не могли бы вы поподробней объяснить, как у вас удается в контексте гуглокэша клик по ссылкам перехватывать? Смотрю код, но пока не врубаюсь. Как вам удалось кроссдоменные политики обойти?
              Заметил что блок расположен в try {}catch…
              • 0
                А! Все, дошло, понял. Спасибо.
              • 0
                Я чего-то не понимаю!
                Раньше, если страничка была недоступна, то нужно было нажать cmd+L и добавить «cache:» в начале.
                А теперь наступили светлые времена и нужно всего лишь скопировать адрес, открыть cache.nevkontakte.com, вставить скопированный адрес и подождать.
                Что-то здесь не так.
                • 0
                  Если вам надо посмотреть одну страничку, то так действительно проще (пока). А вот когда вам нужно походить по ссылкам в кэше, придётся повторять эту последовательность действий для каждой ссылки. Тут уже удобнее один раз зайти на cache.nevkontakte.com/ и вставить ссылку туда.

                  Кроме того, я специально писал код с прицелом на использование и в режиме букмарклета. Поэтому, в недалёком будущем вам достаточно будет один раз кликнуть по панели закладок.
                • 0
                  Для пользователей Firefox'а существует расширение — Gcache+ ( addons.mozilla.org/en-US/firefox/addon/gcache-13694/?src=search )
                  + для разблокировки википедии — Unblackout Wikipedia ( addons.mozilla.org/ru/firefox/addon/unblackoutwikipedia/ )
                  • 0
                    А гаджет для igoogle не планируете сделать?
                    • 0
                      Не планировал. А какой в этом смысл?

                      Просто я отродясь не пользовался igoogle и не представляю, для чего может потребоваться этот виджет.

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

                  Самое читаемое