Как бы взлом

Автор: 0x91

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

curl -s -H "Authorization: Bearer guest" https://api.author.today/v1/work/115/content | jq ".[2].lastModificationTime"

И как результат получить время последней модификации второй главы книги с id 115: "2016-05-18T11:37:46.383Z". Id книги я взял "с потолка", для примера. Id можно увидеть в адресной строке на странице книги.

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

В примере выше я использовал:

  • cURL - бесплатная утилита с открытым исходным кодом для доступа к сайтам по протоколу HTTP.
  • JQ - бесплатная утилита с отрытым исходным кодом для разбора JSON строк.
  • Публичный официальный API сайта: api.author.today
  • И никакой магии!

Чуть больше примеров для интересующихся

  1. Примеры ниже полностью проверены и работают на Linux, где выше упомянутые утилиты являются "родными". В Windows вам скорее всего придется заменить объединяющую команду | (вертикальная черта) на что-то другое. Я давно не пользуюсь Windows, так что сорри.
  2. Во всех примерах ниже, необходимо заменить фигурные скобки {} на аналогичные квадратные []. Причина в глюках сайта, который корежит от квадратных скобок внутри спойлеров.

Команда:
curl -s -H "Authorization: Bearer guest" https://api.author.today/v1/work/115/content | jq ".{2}.textLength"

Ответ:
112387

Команда:
curl -s -H "Authorization: Bearer guest" https://api.author.today/v1/work/115/content | jq ".{2}"

Ответ:
{
  "id": 157,
  "workId": 115,
  "title": "Глава 3",
  "isDraft": false,
  "sortOrder": 2,
  "publishTime": "2016-05-18T11:37:46.383Z",
  "lastModificationTime": "2016-05-18T11:37:46.383Z",
  "textLength": 112387,
  "isAvailable": true
}

Команда:
curl -s -H "Authorization: Bearer guest" https://api.author.today/v1/work/115/content | jq ".{} | (.title, .textLength)"

Результат:
"Глава 1"
60979
"Глава 2"
106729
"Глава 3"
112387

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

Заключение

Публичный API сайта является довольно интересным источником информации не только для получения дополнительной информации о книге и ее содержимом, но и о внутреннем устройстве портала.

Читайте справку и будьте друг к другу добрее!

p.s. И все же жутко интересно, что ответили модераторы на жалобу о как бы взломе.

+25
193

0 комментариев, по

350 32 2
Мероприятия

Список действующих конкурсов, марафонов и игр, организованных пользователями Author.Today.

Хотите добавить сюда ещё одну ссылку? Напишите об этом администрации.

Наверх Вниз