tl1

PHP-код для чтения закрытых постов в ЖЖ через RSS

Apr 18, 2015 22:15

Ищу способ снова читать ЖЖ и массу других блогов в одном централизованном приложении. Естественно, это возможно только через RSS. Как оказалось, у ЖЖ есть возможность читать защищённые записи через RSS, но не всё так просто, т.к. отдавалка RSS требует определённых уговоров и, например, Tiny Tiny RSS не справляется с получением защищённых фидов. В ( Read more... )

программирование, ЖЖ

Leave a comment

yurikhan April 19 2015, 05:57:26 UTC
Чисто теоретически, Tiny Tiny RSS должен мочь делать то же самое, если в настройках фида написать URL с ?auth=digest в конце и прописать логин-пароль.

Reply

tl1 April 19 2015, 11:11:36 UTC
Он не может. Я уже посмотрел ему в исходники, там не хватает пары из магических опций.
Так что надо либо пропатчить его, либо сделать прокси скрипт.

Самое главное, кажется:
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
Потому что ЖЖ перепинывает на пару перенаправлений, пока RSS отдаст.

Причём, в общем случае эту опцию писать выглядит не секьюрно, т.е. надо только для ЖЖ её включать.

Reply

yurikhan April 19 2015, 14:07:06 UTC

Хм. А я потыкал curl’ом с командной строки.

Если запрашиваю http://tl1.livejournal.com/data/atom?auth=digest, то получаю сразу 200 OK со списком публичных постов. Это обидно, потому что Atom идеологически более правильный формат, чем RSS.

Если запрашиваю http://tl1.livejournal.com/data/rss?auth=digest, то получаю сначала 401 Authorization Required с заголовком WWW-Authenticate с нонсом, затем curl делает второй запрос по тому же url’у с заголовком Authorization и получает ответ 200 OK со списком публичных и подзамочных постов. Выглядит как нормальный процесс HTTP Digest Authentication.

А вот на http://www.livejournal.com/users/tl1/data/rss/?auth=digest, действительно, дают 302 Found, Location: http://tl1.livejournal.com/data/rss/?auth=digest... )

Reply

tl1 April 19 2015, 15:03:53 UTC
Во, отлично, спасибо, как минимум эта инфа немного ускорит скачку.
Вообще у меня идея сделать прокси фид, который всю френдленту в один RSS собирает, потому что врукопашную забивать френдов очень утомительно.
У ЖЖ ещё есть ограничения типа не более 5 запросов в секунду и т.д., т.е. если TTRSS подписать сразу на несколько десятков отдельных RSS, то теоретически можно попасть в блокировку. Плюс, очень медленно это работает. Поэтому напрашивается cron или тому подобная мутотень, которая будет неторопливо собирать ленту 1-2 раза в день в одну колбасу

Reply

yurikhan April 19 2015, 16:44:38 UTC

Ну у TTRSS (update.php --daemon) тоже внутри планировщик какой-то. Я вот логи посмотрел, оно просыпается раз в 120 секунд и однопроцессно-однопоточно последовательно тащит все запланированные фиды. Пока обработка каждого фида занимает больше 200ms, бан мне не грозит. А с учётом того, что функция update_rss_feed занимает 954 строки кода, в быстрее оно не уложится.

Пойду руки помою и глаза тоже. Бе :-6

Reply

tl1 April 20 2015, 05:31:36 UTC
У меня шаред хостинг самый дешёвый, может там cron есть, а может и нет, я ещё не смотрел даже. Демона там вряд ли дадут гонять.

Reply


Leave a comment

Up