
RSS-агрегатор NetNewsWire
Мы уже обсуждали, насколько важен и удобен RSS для профессиональной работы с источниками в интернете. Это единственный способ собрать огромный массив данных с тысяч сайтов, соцсетей, блогов, твиттер-аккаунтов, торрент-трекеров и др.
Вся информация накапливается в личном агрегаторе, доступна в удобное время, в том числе офлайн. Никогда ничего не теряется. Это особенно актуально сейчас, в условиях информационной блокады, периодических отключений интернета и угрозы полного шатдауна.
Завершение хайпа — признак взросления технологии
В 2013 году компания Google прекратила разработку RSS-ридера Google Reader. Это стало сигналом, что хайп вокруг блогосферы закончился. Наступила новая эпоха социальных сетей и централизованных платформ.
На место блогов пришли миллионы пользователей, генерирующих UGC в соцсетях: видео, фотографии, короткие твиты (ютуб, фейсбук, твиттер, инстаграм и т.д.).
Казалось бы, нашествие UGC означает расцвет RSS? Но нет, для социальных сетей первой волны RSS стал идеол��гическим врагом. Фиды RSS удалялись из социальных сетей. Каждый сайт типа Facebook пытался замкнуть аудиторию строго в своём загончике. Сейчас дошло до того, что даже внешние ссылки они стараются скрыть и заменить на «предпросмотр страницы» или кэшированную версию. Главное, чтобы со своих серверов.
Такой огороженный сад — изобретение Apple. А сейчас этот бесславный «подвиг» пытаются повторить другие интернет-гиганты, в том числе Google. О принципах открытого свободного интернета никто не думает. Прибыль на первом месте. Идёт война за внимание пользователей, каждая дополнительная секунда — на вес золота. Захватив внимание, отпускать человека уже нельзя, это закон бизнеса.
Google Reader запустили во времена бума блогосферы в 2005 году, когда на рынке присутствовало огромное количество других RSS-ридеров. Самым популярным считался Bloglines.
Но веб-синдикация типа RSS не совсем вписалась в новую бизнес-модель Google, которая как раз в то время запустила свою социальную сеть (тоже неудачно).
Закрытие сервиса состоялось на фоне постепенной деградации RSS-индустрии. В начале 2015 года одним из последних прекратил своё существование Bloglines. Как и лопнувший пузырь доткомов с банкротством половины интернет-компаний в конце 90-х, этот процесс отмирания лишних сущностей — признак зрелой технологии и взросления индустрии, которая избавляется от пены финансовых спекуляций. И выходит на плато здорового использования.
То же самое сейчас происходит с децентрализацией, P2P-мессенджерами, RSS и другими свободными технологиями.
Аудитория RSS — самые продвинутые пользователи. Кажется, что технология отлично себя зарекомендовала. И сейчас из «впадины разочарования» она движется по «склону просвещения» на «плато продуктивного использования».

Стадии технологического развития от Gartner, август 2021
Google Reader и Bloglines умерли, но дело их живёт. RSS и не думает уходить со сцены. Совсем наоборот, технология возрождается.
А если какой-то сайт не публикует фиды для нашего агрегатора, то их можно сгенерировать с помощью сторонних инструментов, таких как RSS-мосты и RSS-прокси.
Мосты для сайтов, у которых нет RSS

Как мы уже говорили, 15 лет назад на хайпе каждый сайт экспортировал RSS-фид. Поддержку RSS даже встроили в браузеры. Все считали, что за этим будущее. Но потом хайп прекратился. Сейчас развитие технологии по спирали выходит на новый уровень, а вот мода выкладывать RSS-фид на каждом сайте пропала, к сожалению.
Чтобы исправить это недоразумение, разработан PHP-проект RSS-Bridge. Он помогает генерировать ленты RSS для сайтов, которые не поддерживают экспорт. Можно поднять на своём сервере или запустить из консоли. Для примера см. чужие мосты. Полученный оттуда фид загружаем в свой агрегатор, он будет периодически дёргать и обновлять его.
На данный момент сообщество подготовило скрипты генерации RSS примерно для сотни популярных сайтов, в том числе:
Facebook: последние посты на указанный странице или профиле (временно не работает)
YouTube: канал, плейлист или новые результаты поиска по ключевым словам
Google: новые результаты поиска по ключевым словам
Instagram: новые фотографии от указанного юзера
Twitter(RSS-фиды для твиттера можно получить на специализированном прокси типа Nitter)
Telegram: посты в публичном канале
… и многие другие.
RSS-Bridge экспортирует в несколько форматов: Atom, MRSS, HTML, JSON и Plaintext (можно добавить свой формат через Format-API).
Пример экспорта из Telegram в HTML:
https://sebsauvage.net/rss-bridge/?action=display&bridge=Telegram&username=%40ancotir_science&format=Html
Получаем сгенерированный HTML, например, для публикации на сайте или просто для чтения в стандартном формате, без необходимости запускать клиент Telegram:

То же самое с RSS.
Форматы JSON и текст подходят для использования в других приложениях. Например, можно добавить собранную информацию в базу данных или электронные таблицы. Отправить сообщение по почте, SMS, в телеграм-канал, Slack или Discord.
В общем, очень полезный инструмент для не только для экспорта RSS, но и для автоматизации различных действий в интернете. Это чем-то напоминает скрапинг сайтов, чтобы триггернуть действия в конвейере типа Yahoo Pipes или IFTTT.
Примечание. Примерно половина скриптов RSS-Bridge сейчас не работает, потому что Facebook и другие сайты активно противодействуют скрапингу и часто меняют шаблоны. Не всегда разработчики успевают оперативно вносить изменения в скрипты для генерации RSS.
RSS-прокси для остальных сайтов
RSS Proxy — ещё один проект генерации RSS для любого сайта (путём анализа структуры HTML).

На выходе получаем фиды RSS/Atom или JSON, см. демо.
Проще всего поднять RSS Proxy в докер-контейнере:
docker pull damoeb/rss-proxy
docker run -p 3000:3000 -it damoeb/rss-proxyПотом открываем localhost:3000 в браузере.
Парсинг RSS-Proxy универсально работает для всех сайтов. В том числе для тех, к которым отсутствуют мосты RSS-Bridge, упомянутые выше.
Для понимания, в RSS-Bridge встроены правила извлечения контента, которые подходят для многих сайтов и других информационных каналов (например, в телеграме). Они работают отлично. Однако RSS-Proxy идёт ещё дальше и пытается извлекать контент вообще с любых сайтов с базовой структурой HTML.
Для этого реализована весьма изящная логика:
let score = 0;
if (contextPathContains('header')) score -= 2;
if (contextPathContains('nav')) score --;
if (contextPathContains('article')) score += 2;
if (contextPathContains('main')) score += 2;
if (contextPathContains('aside')) score -= 2;
if (contextPathContains('footer')) score -= 2;
if (contextPathContains('ul>li')) score --;
if (linkPathContains('h1')) score += 4;
if (linkPathContains('h2')) score += 3;
if (linkPathContains('h3')) score += 2;
if (linkPathContains('h4')) score ++;
if (linkPathContains('strong')) score ++;
if (linkPathContains('aside')) score --;
if (linkPathContains('article')) score += 2;
// if (rule.linkPath.toLowerCase() === 'a') score --;
if (rule.contextXPath.toLowerCase().endsWith('a')) score -= 5;
if (rule.linkXPath.toLowerCase() === 'self') score --;Если HTML нормальный, то такой подход работает вполне качественно. Семантические теги в HTML — очень полезная вещь не просто для визуальной разметки, но и для парсинга страницы. Сами разработчики могут использовать инструменты типа RSS-Proxy, чтобы создавать и публиковать фиды для своих сайтов. Ну и для чужих это делать никто не мешает.
Ещё один похожий проект — китайский фид-генератор RSSHub, тоже умеет генерировать фиды практически из чего угодно. Работает в связке с браузерным расширением RSSHub-Radar, мобильными приложениями RSSBud (iOS) и RSSAid (Android).
Автор RSS-Proxy сейчас переписывает свою программу на Котлине: он запустил новый проект rich-RSS, и там вроде бы даже реализованы некоторые функции, которых нет в RSS-Proxy, но это нужно ещё проверить.
См. также другие RSS-генераторы в огромном списке различных инструментов для работы с RSS.
RSS-ридеры (агрегаторы)

Судя по всему, децентрализация снова входит в моду. RSS возвращается в нашу жизнь. Хотя опытные люди спокойно продолжали им пользоваться все эти годы.
Актуальный список RSS-ридеров и агрегаторов включает несколько десятков программ. Наш опрос годичной давности показал, что самыми популярными на Хабре являются Feedly (39%), Inoreader (24%) и категория «Другие» (32%).
В последнее время появилось несколько новых разработок. Например, FreshRSS (десктопная версия бесплатная) и NetNewsWire (бесплатный и опенсорсный ридер, но только под macOS/iOS).

FreshRSS

NetNewsWire
В комментариях к предыдущей статье отметили главные достоинства RSS-ридеров:
- Вы никогда ничего не пропустите
- Можно читать ленту в удобное время
- Удобно делиться подборками фидов
Освоив RSS, уже практически невозможно вернуться к примитивному способу потребления информации. Ведь и СМИ, и социальные сети норовят скормить читателю информацию в стиле «кушай, что дают» или «читай то, что написано на главной странице / в ленте».
Особенно поражает лицемерие социальных сетей, которые призывают людей «делиться», а на самом деле удаляют RSS со страниц, чтобы удержать людей внутри своей изолированной песочницы.
Нет уж, спасибо за сервис. Мы как-нибудь сами.
Будущее RSS
Слухи о смерти RSS сильно преувеличены. Это отличная технология, которая и в нынешнем виде великолепно работает на свободных и открытых принципах.
Централизованные платформы типа Facebook умеют засасывать огромную аудиторию, но это временно. Они не способны сосуществовать с другими такими же централизованными платформами, каждая из которых работает по принципу мощного пылесоса. Такая модель неустойчива и нежизнеспособна по определению. Этим гигантам суждено убивать друг друга, иначе сам умрёшь.
В отличие от них, децентрализация — это устойчивая, жизнеспособная и долговременная модель развития Сети, а веб-синдикация типа RSS/Atom отлично в неё вписывается.
Сейчас W3C рассматривает новый стандарт ActivityStreams, который называют «RSS на стероидах». На его основе сделан в том числе протокол децентрализованных социальных сетей ActivityPub. Возможно, за такими сетями будущее.
