HTTP не случайно стал одним из самых используемых транспортов в программировании всяческих веб-сервисов. Он, во-первых, прост в использвании, чему способствует и сама архитектура, и то, что хорошие библиотеки для него есть, наверное, под любую среду. А во-вторых, у него есть куча дополнительных сервисов, о которых в начале программирования вообще не надо задумываться, а зато когда они понадобятся — они тут как тут.

Взять, например, RSS.

Казалось бы, простая идея: берется содержимое сайта и заворачивается в вид, больше пригодный для машинного чтения, чем HTML. Но это рождает изначально незаметную проблему. Раз контент сайта теперь может читать робот, он это может делать гораздо чаще, чем человек, ему не надоест. И так и случается на практике: запросов к фидам на блоге обычно на порядки больше, чем к обычным страницам. По идее, это должно было "убить" серверы и сожрать немеряно трафика. Но так не случилось, потому что у HTTP, через который передается RSS, есть механизм "conditional get", который позволяет серверу и клиенту сверять время последнего обновления данных и не передавать их каждый раз почем зря. И в самом протоколе RSS для этого ничего придумывать не пришлось. Все нормальные агрегаторы этим успешно пользуются.

Есть у HTTP еще одна такая "бесплатная" вещь — авторизация. Бесплатная в том смысле, что в большинстве библиотек, опять же, поддержана, и изобретать велосипедов не нужно. И эту авторизацию хочется использовать для фидов, так как они стали уже не только атрибутом блогов, но и все чаще используются как просто механизм оповещения о чем угодно, в том числе и на приватных сервисах.

Единственное, чего не хватает — так это поддержки со стороны агрегаторов. В том смысле, что там просто некуда ввести логин и пароль. В принципе, можно адрес фида вводить как http://login:password@host/feed/, но это, понятное дело, несекьюрно.

Вот это, собственно, и есть идея — дать возможность при подписке на фид вводить авторизационные данные. Кажется, меня читает кто-то из Яндекс.Ленты, и было бы здорово увидеть там такое. Глядишь, потом и всякие Google'ы с Bloglines'ами подтянутся :-).

Комментарии: 15

  1. artreal

    В ActiveRefresh есть куда вносить логин и пароль.
    Правда, в последнее время AR заброшен разработчиком... :(

  2. Роман Чепляка

    Ну вот LiveJournal вполне себе отдает защищенные записи, принимая авторизационную информацию из кук. А я их читаю, используя Akregator, который использует куки Konqueror-а.

    Что до гугла, то GMail давно использует HTTP-авторизацию для своего Atom feed-а.

    А доверять логин/пароль той же Яндекс.Ленте по-вашему секьюрно?

  3. kukutz

    Единственное, чего не хватает — так это поддержки со стороны агрегаторов. В том смысле, что там просто некуда ввести логин и пароль. В принципе, можно адрес фида вводить как http://login:password@host/feed/, но это, понятное дело, несекьюрно.

    Чем это несекьюрно?

    Да, кстати, на Яндекс.Ленте это работает.

  4. Cherny

    В Яндекс.Ленту содержимое RSS-фида попадает с помощью специального робота, который с авторизацией точно мучится не будет. А даже если и будет, никакой информации о читателях, использующих данный агрегатор, такая авторизация не даст.
    В Яндекс.Ленте сейчас можно только посмотреть количество подписчиков на конкретный блог.

  5. DenD

    В принципе, можно адрес фида вводить как http://login:password@host/feed/, но это, понятное дело, несекьюрно.

    А секьюрно-то, наверное, и не сделаешь. Транспорт все равно будет передавать его plain-text'ом.

  6. Роман Чепляка

    DenD: в HTTP/1.1 есть схема авторизации DIGEST.

  7. Александр Вольф

    Возможность авторизации фидов видел в нескольких агрегаторах - это уже не ново...

  8. Иван Сагалаев

    Несекьюрно тем, что пароль на экране показывается, и его можно из-за плеча подглядеть. Потом, опять же, если фид отдается по HTTPS, то с нормальной авторизацией пароль передастся шифрованный, а так — открытый.

    Хотя, по большей части это не столько несекьюрно, сколько неудобно. Не все знают, что логин с паролем можно в URL написать.

    А совсем в идеале авторизация в сам Яндекс может через HTTPS делаться. Тогда эти все пароли еще и злобному администратору моей офисной сети не достанутся :-). (Это я от имени гипотетического юзера-параноика говорю, у меня самого никакой офисной сети нет.)

  9. kukutz

    Несекьюрно тем, что пароль на экране показывается, и его можно из-за плеча подглядеть.

    Ну, показывается только при вводе.

    А насчёт удобства Вы правы, наверное. Подумаем.

    HTTPS поддерживается и там и там, вроде.

  10. Homo-Adminus

    Очень удивился, прочитав такое пожелание, как хттп-авторизация... Уже давно пользуюсь рсс-ом и с самого начала у меня в списке фидов присутствовал рсс-фид с сервера, закрытого через http auth. Все перепробованные ридеры его умели... нормально умели, замечу... у всех были поля для ввода логина и пароля. Сейчас юзаю Omea Reader - он тоже умеет :-)

  11. Van

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

    Правда, полноценным агрегатором Оперную читалку к сожалению назвать нельзя.. :(

  12. Dik

    Имхо в этом смысле перспективнее смотреть в сторону xml-rpс. Например при появлении новых постов пинговались бы не только сервисы типа pingomatic но и клиенты подписчиков.

  13. Clyde

    В отличном он-лайн ридере News Alloy авторизация поддерживается. Ещё и разработчик - русскоговорящий.

    Странно только, почему Яндекс.Лента и Bloglines так тянут с внедрением.

  14. Dik
  15. Маг

    Разработчики uTorrent по-своему решили проблему авторизации, предложив пользователям подсмотреть данные cookie и вписать их в строку запроса RSS feed следующим образом:

    Once you have the appropriate information, use this format for the feed URL:
    http://sometorrentsite.com/rss.php:COOKIE:uid=1234;pass=asdjh12378912y3lkj

    Учитывая, что обычно пароли не хранятся в cookies в plain-text, это можно считать более-менее приемлимым решением. Впрочем, создав своё cookie в браузере для указанного домена, есть шанс попасть туда, не зная пароля.

Добавить комментарий