Как бы взлом
Автор: 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
- И никакой магии!
Чуть больше примеров для интересующихся
- Примеры ниже полностью проверены и работают на Linux, где выше упомянутые утилиты являются "родными". В Windows вам скорее всего придется заменить объединяющую команду | (вертикальная черта) на что-то другое. Я давно не пользуюсь Windows, так что сорри.
- Во всех примерах ниже, необходимо заменить фигурные скобки {} на аналогичные квадратные []. Причина в глюках сайта, который корежит от квадратных скобок внутри спойлеров.
Команда:
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. И все же жутко интересно, что ответили модераторы на жалобу о как бы взломе.