Общение с ЖЖ из скрипта по протоколу HTTP(S), ч.1: документация

Jan 18, 2023 16:31

Мне давно было любопытно наладить программное взаимодействие с ЖЖ. Есть ряд способов это сделать, но пока я хочу познакомиться только с одним из этих способов.

Ранее я уже писал про взаимодействие по протоколу HTTP(S) с известным видеохостингом «YouTube», а также я писал про работу с веб-приложением «WordPress» по интерфейсу REST API. В тех случаях я просто набирал в адресной строке браузера URL-адреса́ определенного вида (служившие своеобразными командами-запросами) и отправлял их веб-серверу, который возвращал в окно браузера ответ в виде текста в формате JSON с нужными мне данными, о которых я просил в исходных URL-адресах.

Принципиально взаимодействие с ЖЖ из скрипта по протоколу HTTP(S) ничем не отличается от тех случаев. ЖЖ («LiveJournal», сокращенно «LJ», по-русски «Живой Журнал», сокращенно «ЖЖ») тоже является веб-приложением, размещенным на веб-сервере, то есть это тоже веб-сервис. Ему тоже можно отправлять HTTP-запросы определенного вида, тем самым отдавая ему команды или передавая запросы на выдачу нужных данных. После этого ЖЖ может выполнить команду, возвратить просителю в HTTP-ответе запрошенные данные или возвратить в HTTP-ответе информацию об ошибке. Конечно, есть много технических деталей, в которых взаимодействие с ЖЖ отличается от двух вышеупомянутых случаев. Об этом, в частности, и будет этот пост и ряд следующих.

Где найти документацию

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

Раньше главная страница технической документации веб-приложения «LiveJournal» была доступна по следующему URL-адресу:

http://www.livejournal.com/doc/server/index.html (мертвая ссылка)

Похожие на приведенный выше URL-адреса можно встретить в большинстве статей в интернете, посвященных разбираемой в этом посте теме. Однако, сейчас эти URL-адреса стали мертвыми ссылками, веб-сервер ЖЖ возвращает в ответ ошибку 404.

На данный момент эта документация доступна по следующему URL-адресу:

https://stat.livejournal.com/doc/server/index.html
(или https://l-stat.livejournal.net/doc/server/index.html)

Как видно из этого URL-адреса, теперь вместо протокола HTTP предлагается использовать HTTPS (это общий тренд в современном интернете). Кроме того, вместо поддомена «www» теперь используется поддомен «stat» (вероятно, сокращение от слова «статический», то есть тут хранятся статические страницы сайта).

На этой странице сказано, что это версия документации от 2008 года. Кроме того, можно заметить, что документация хранится в какой-то устаревшей кодировке, так как некоторые символы отображаются в браузере некорректно. Эти два факта позволяют сделать вывод о том, что действующей администрации проекта эта документация и программный доступ к их веб-приложению со стороны пользователей неинтересны (работа в этом направлении, похоже, давным-давно не ведется). Скажем этим людям спасибо хотя бы за то, что они вообще не перекрыли доступ к этой документации и не перекрыли программный доступ к веб-приложению «LiveJournal».

Следует отметить, что эта документация доступна только на английском языке.

В принципе, эту документацию можно найти и на других сайтах (интернет всё помнит). Например:

https://docs.huihoo.com/livejournal/server/

Спасибо китайским товарищам.

По вышеприведенной ссылке сказано, что там находится документация от 2004 года. Я просмотрел несколько страниц и больших отличий от версии 2008 года на сайте ЖЖ не заметил.

Как устроена документация

Документация поделена на разделы, которые внутри тоже поделены на разделы, которые тоже поделены на разделы и так далее. То есть имеется определенная вложенность, но эта вложенность не отразилась на физической структуре папок: все файлы документации находятся в одной папке «server».

Но вложенность отражена в названиях файлов документации. В названиях файлов содержатся символы точек, которыми разделяются названия уровней вложенности документации. Чем больше в названии точек, тем более глубокую вложенность имеет данный раздел в документации.

Кроме этого, названия разделов могут быть сокращены до аббревиатур. Например, часть документации с названием «LiveJournal Programming» в названиях файлов документации отражается аббревиатурой «ljp». Вот как выглядит содержание документации, развернутое только на первые два уровня вложенности:

https://stat.livejournal.com/doc/server/
index.html <-- полное содержание всей документации

lj.index.html LiveJournal Server
lj.preface.html Preface
lj.intro.index.html I. Introduction to LiveJournal
lj.install.index.html II. LiveJournal Installation
lj.customize.index.html III. Customizing Your Installation
lj.admin.index.html IV. Administering a LiveJournal Site
lj.features.index.html V. LiveJournal Features
appx.gfdl.html B. GNU Free Documentation License
appx.contribs.html C. Documentation Contributors
appx.glossary.html Glossary

bml.index.html BML (Better Markup Language)
bml.preface.html Preface
bml.tutorial.html 1. A Brief Tutorial
bml.flags.html 2. BML Block Types
bml.core.html 3. Core BML blocks
bml.api.ref.html I. API Documentation

ljp.index.html LiveJournal Programming
ljp.prog-guide.html I. Programming Guidelines
ljp.internals.html II. Internals
ljp.csp.protocol.html III. Client/Server Protocol
ljp.styles.index.html IV. Making Journal Styles
ljp.api.html V. Application Programming Interface
ljp.dbschema.index.html VI. Database Schema (мертвая ссылка)

Как оказалось, некоторые страницы документации отсутствуют (есть мертвые ссылки).

Нужный раздел документации для темы этого поста

Для темы этого поста в первую очередь интересна часть III (Client/Server Protocol) раздела «LiveJournal Programming» документации:

https://stat.livejournal.com/doc/server/ljp.csp.protocol.html

Из сказанного ранее должно быть понятно, что в этом URL-адресе «ljp» означает «LiveJournal Programming», а «csp» означает «Client/Server Protocol». Наверное, стоит заметить, что фраза «Client/Server Protocol» не является названием протокола. Это просто описание его сути: протокол, по которому происходит общение между клиентом (наш скрипт) и сервером (веб-приложение «LiveJournal», обеспечивающее веб-сервис, выполняющий команды и выдающий запрошенные данные).

Вот как выглядит сокращенное содержание части III (Client/Server Protocol) раздела «LiveJournal Programming» документации:

https://stat.livejournal.com/doc/server/
ljp.csp.protocol.html <-- полное содержание этой части

ljp.csp.guide.html 23. Client/Server Protocol - Quick Reference
ljp.csp.auth.html 24. Authentication in the Client Server Protocol
ljp.csp.flat.protocol.html I. Flat Client/Server Protocol Reference
ljp.csp.xml-rpc.protocol.html II. XML-RPC Client/Server Protocol Reference
ljp.csp.blogger.html 25. Supporting the Blogger API
ljp.csp.atom.html 26. Supporting the Atom API
ljp.csp.versions.html 27. Protocol Versions
ljp.csp.entry_downloading.html 28. Downloading Entries
ljp.csp.export_comments.html 29. Exporting Comments
ljp.csp.proplist.html 30. Journal Entries Meta-data
ljp.csp.faq.html A. Frequently Asked Questions

Номера с 23 по 30 - это сквозная нумерация глав в части «LiveJournal Programming» документации.

Выводы

В эту документацию, если верить отмеченным в ней годам, последний раз изменения вносились около 15 лет назад (хотя, возможно, в нее вносились и более свежие изменения, но в документации об этом ничего не сказано). Поэтому, вероятно, часть информации в этой документации уже не соответствует реальному положению дел. Таким образом, при ее использовании придется проверять всё методом научного тыка.

Полезные ссылки

Статьи в блоге Евгения Ильина:
1. Основы работы с сервером livejournal.com
2. Еще раз про авторизацию на сервере livejournal.com
3. Программная отправка комментариев в livejournal

Продолжение следует.

Инструмент, Образование, Сайтостроение, Программирование, Английский язык, ЖЖ

Previous post Next post
Up