войти зарегистрироваться

RSS whois

индекс
0,00

Читаем подзамочные записи Livejournal.com в Google Reader

До появления Google Reader я активно читал френд-ленту в Livejournal.com. А потом появился habr. А потом куча интересных standalone блогов.
Постепенно greader стал основным инструментом чтения новостей. А с открытием Yahoo Pipes качество моих лент значительно возросло.
Pipes позволили отфильтровать несколько лент только по интересующим меня топикам, позволили заполнить поле description в тех лентах, где авторы по каким-то причинам не стали их заполнять (новости с сайта IRN.ru, лента Компьютерры), и многое другое.

Но была в бочке меда и ложка дегтя. Ни Pipes, ни Google Reader не умеют делать digest authentication. Pipes умеют только basic, greader не умеет и того. А digest — единственный тип аутентификации, который поддерживает Livejournal.com.
Поэтому попытки залогиниться в ЖЖ и читать ленты с подзамочными записями были обречены на неудачу.
Приходилось периодически заходить в ленту и просматривать, не написал ли кто-нибудь из друзей что-нибудь «под замком».

Да, в интернете есть сервисы а-ля
http://freemyfeed.com,

решающие эту задачу, но доверите ли вы кому попало в интернете логин и пароль от своего ЖЖ? Да и как интегрировать с pipes этот сервис мне придумать не удалось. Но нет худа без добра: автор раскрыл исходники скриптов. Вооружившись терпением и мануалом по php, на основе исходных текстов freemyfeed я написал собственный скрипт — remove-authentication.php, который делает одну простую вещь: заменяет digest authentication на basic.
C ним становятся возможными конструкции:
http://user:pass@my.server/remove-authentication.php?feed=feed-url

И эта штука замечательно интегрируется с pipes.
Кому надо, забирайте. И читайте ЖЖ в Google Reader. )
UPD: код надо сохранить как remove-authentication.php и выложить на любой сервер, поддерживающий php :) В идеале — свой.
UPD2: перенес в блог RSS

<?php
  if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Формат запроса - USER:PASS@SERVER.RU/remove-authentication.php?feed=FEED-URL';
    exit;
  } else {
    if (isset ($_GET['feed'])) {
      header("Content-Type: text/html; charset=utf-8");
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $_GET['feed'] .'?auth=digest');
      curl_setopt($ch, CURLOPT_AUTOREFERER, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
      curl_setopt($ch, CURLOPT_USERPWD,strtolower($_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW']));  
      $data = curl_exec($ch);
      curl_close($ch);
    } else {
      echo 'Формат запроса - USER:PASS@SERVER.RU/remove-authentication.php?feed=FEED-URL';
      exit;
    }
  }
?>


* This source code was highlighted with Source Code Highlighter.


PS: это мой первый код на php, конструктивная критика приветствуется :)

комментарии (52)

  • Так, а что с этим кодом сделать надо? :)
    • Сохранить как remove-authentication.php и выложить на любой сервер, поддерживающий php.
  • RSS-потоки яндекса и так показывают подзамочные)))
    Своих френдов призвала поменять настройки, чтобы не палились…
    • Вы криптозоологией не увлекаетесь? Говорят, снежный человек существует.
    • РСС Яндекса уже давно (больше года) не показывает подзамочные. И не в настройках тут дело.
      • у меня показывает! и у других)))
        И дело в настройках в ЖЖ.
        Умные все — так минусуйте молча)))))))))))))
        • а можно каммент или пост на эту тему? потому что он то показывает, то не показывает, у меня сложилось ощущение, что так происходит потому, что видимость выставляют после написания поста, а если сразу выставлять — то в ленте ничего нет
          • Там сразу если выставлять после написания поста — то видимость выставления, на самом деле баг палит многих.
            Нужно в настройках установить изначально писать только для себя. Тогда даже пост «для всех» опубликуется по умолчания как инвизбл.
            А Яндекс быстро забирает записи, в отличие от Google…
            • ну да, о чем-то похожем я и подумал ))
              спасибо
          • pics.livejournal.com/yaninns/pic/00006y35
            • а здесь 403
              • pics.livejournal.com/yaninns/pic/0000ay8x
                *извиняюсь, ссылка была из подзамочного поста, вставила заново, должно быть видно*
                • ага, понятно
                  спасибо еще раз
                • я так понимаю такие настройки, позволяют не палить свои подзамочные записи? :), или наоборот?
                  чётъ я запутался…
                  • Да, менно не палить свои подзамочные записи на весь инет. У меня в RSS много интересных ЖЖ, где я не френд, и иногда стыдно читать личные записи, предназначенные для друзей. Если пройти по ссылке, то уже закрыт пост, но поздно: в потоке он есть и будет всегда.
                    Обнаружила по собственному ЖЖ, попробуйте себя ввести в RSS
                    • :) я лопух, мне надо разбираться, что бы чего нить пробывать.
                      Спасибо за наводку!

                      *ушёл читать про контрацептивы )))
                    • да и сервера у меня нет, где пхп файл положить :)
                      но сделать что бы не палиться, это можно и без онного.
                      сенк! :)
                    • Только если кто-то воспользуется инструкцией из этого поста, все методы предосторожности не помогут
                  • Ну, а по теме: не все знают, и большинство подзамочных посто уже захвачено RSS-потоками именно Яндекса, в Google — нет…
                    • Если на журнал через гуглоридер подписано несколько человек то тоже достаточно быстро захватываются.
                      • Спасибо, не знала. Однако, Яндекс хранит даже удаленные посты, и даже если в новом потоке заново добавить ЖЖ — проиндексирует и вставит, а Google не показывает. Свой удаленный журнал (все посты сама лично удалила после того, как его ломанули), так и читаю ))) Полезная фишка для меня
                        • Простите за не скромный вопрос, а вы были подписаны на свой ЖЖ(удалённый) через гридер, до его удаления?
                          • Нет, не была подписана, в этом дело? Но в Яндексе то тоже новая рега, новая подписка — и показал все записи… Причем, эксперементировала: удаляла пост и в Google его уже не было, в Яндексе — был. Но возможно разовый случай.
                            Обязательно в декабре поиграюсь с подписками и постами, сейчас инет малоскоростной, вот 5 мин страницу открывала)))
                        • А когда Яндекс вообще удаляет проиндексированные посты? Есть какие-то данные по сроку устаревания?
                          • В том то и дело, что не удаляет. И хранит видимо и комменты, еще не пробовала поюзать не так давно открытый «поиск по комментариям»
        • Ну я собственно говоря вас не минусовала :)
          • Тогда приношу извинения за ответ на это Вам.
            А про настройки ЖЖ Вы ошибаетесь…
  • Какой нехороший метод открыть подзамки для всего интернета. Ждем первых скандалов.
    • Ну хоть есть ещё адекватные люди.
  • Здорово. Сам читаю френдленту через pipes, правда в программировании ничего не смыслю и в частности в php. Очень хотелось бы увидеть подробную инструкцию по интеграции этого дела с пайпсами и сорс пайпсовской конструкции которую ты используешь.
    • Насчет подробной интеграции — сначала посмотрите фид:

    • (Enter при редактировании лучше не нажимать :))
      Сначала посмотрите фид:

      http://pipes.yahoo.com/dfayruzov/ljfriendsfeed


      Если останутся вопросы по интеграции — спрашивайте. )
  • Вы же понимаете, что, сделав так, рискуете открыть подзамки всех своих друзей публично и через месяц найти их в поиске?
    • Можно подробней? Даже если я не «share» запись, она всё равно индексируется и попадает в выдачу гугла, будучи отображённой в greader?
      • Например у гридера есть такая вещь, как рекомендация мне лент на которые подписаны те, кто читает похожие ленты что и я. Вот будет интересно, если такая лента с подзамками будет кому-то рекомендоваться
        • Ого, тогда и пароль, получается, можно засветить.
          А там нельзя как-то создавать никому не видимые ленты? А то вы меня расстроили. Я уж думала, наступило светлое будущее.
          • Пароль лучше встроить внутрь прокси-скрипта, а не передавать ему в строке запроса :)
    • И снова нам на помощь приходят yahoo.pipes:
      • Сделал тоже самое, а куда фид ставлять? Не мог бы подробнее рассказать бы?
  • Спасибо, полезная фича. У меня работает :)
  • если есть машина с пхп, то там есть и мускл… можно попробовать сделать свой гридер на вордпрессе (для вордпресс есть плагин который умеет в себя агригировать рсс поток)+этот код
    ну и в этот свой ридер пускать только себя
    • Эммм
      Не вижу необходимости в мускуле
      В своё время написал для тех же целей парсер (заточен был под моё форматирование, но не суть важно):
      по крону запускался wget, который забирал последние штук 5 страниц френдленты (будучи авторизованным), и склеивал их в отдельный файлик. php-скрипт тупо разбирал это регэкспом (потому и зависимость от стиля была) и выдавал rss, который я с удовольствием читал. Необходимости в мускуле, повторяю, нету.
  • «Pipes умеют только basic, greader не умеет и того.»
    «заменяет digest authentication на basic»
    не понял, какой смысл тогда преобразовывать digest в basic, если GReader-у это не поможет?
    • LJ feed -> преобразования в Pipes -> greader
  • выше писали о том, что так вполне можно открыть подзамочные записи своих жрузей. по-моему, возможность читать френд-ленту в GReader не стоит такой пакости…
    понятно, что «безболезненно» подзамочные записи из ЖЖ не достать в GReader, так что тут можно только активно добиваться от самого ридера к-л подвижек, связанных с конфеденциальностью лент, которые читаешь.
    или я не прав?
    • Можно удалять содержание непубличного поста: остается только заголовок и ссылка.
      Как это сделать с помощью pipes — картинка выше.
  • Уже как пару лет читаю похожим образом ЖЖ. Только мой скрипт работает немного иначе — к примеру по запросу somehost/script/username.livejournal.com/login/pass я просто получаю feed.
  • И че, светить в ссылке на RSS свой логин и пароль?
    Я бы их в коде прописал, вы ведь все равно скрипт у себя хостите.
  • Спасибо большое, мегаполезная штука!
    До этого френдленту приходилось читать только из ЖЖ :)
  • Я например для того чтобы читать входящую почту вконтакте через RSS написал, маленький конвертор через regexp и сделал локальный http сервер на питоне. Вроде работает.
  • Всё это, конечно, замечательно, но пока не будет возможности читать через RSS ещё и комментарии — использование RSS для ЖЖ неюзабельно, увы. Зачастую бывает так, что дискуссия в комментах гораздо интереснее, чем сам пост.
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.