На днях я сделал ещё один userscript для ВКонтакте. На этот раз это кое-что необычное - данный скрипт позволяет просматривать удаленные записи и комментарии на страницах групп\сообществ.
Конечно, для проделывания такой "магии" есть некоторые условия, но это остается довольно полезным трюком.
О принципе работы далее в этой записи, ссылка на скачивание в конце.
Что происходит
ВКонтакте активно использует динамическую манипуляцию страницами - когда на "стену" добавляется новая запись или комментарий, сервер присылает запрос для добавления элемента на страницу.
Аналогично, когда "материал" удаляется, сервер так же присылает запрос.
Таким образом, если перехватывать момент удаления материалов, можно сохранять локальные копии, позволяя вам видеть все материалы, что были удалены пока у вас была открыта вкладка с группой\страницей.
Как происходит
После небольшого анализа выяснилось, что удаляемые записи с страницы просто скрываются (то есть, запись всё ещё на странице, но уже невидима), в то время как комментарии действительно удаляются (приводя к полному исчезновению элементов).
"Возврат" записей довольно легко покрывается CSS "фильтром", добавляемым в конец скрипта.
Возврат комментариев предусматривает перехват момента удаления комментария.
Какое-то время назад эта часть могла бы быть проблематичной, но, к счастью, современные браузеры поддерживают интерфейс MutationObserver, позволяющий эффективно следить за изменениями элементов страницы.
Поэтому данная часть реализуется относительно небольшим фрагментом кода, что создает "слушатель изменений" для "стены" страницы\группы, ловит удаляемые комментарии, и ставит их обратно на страницу с соответствующей пометкой (для индикации "удаленности").
В общей сложности скрипт занимает немного более сотни строк нехитрого JS.
Случаи применения
Преимущественно данный userscript был создан для способствования модерации групп:
По неизвестным мне причинам, некоторым людям свойственно считать, что уничтожение улик нарушающих правила материалов спасает от ответственности за их изначальную публикацию.
С данной проблемой скрипт прекрасно справляется - если у вас открыта страница группы в одной из вкладок (фоновой, или нет, значения не имеет), при переключении на нее вы увидите все появившиеся материалы, даже если они были удалены.
В качестве бонуса, это так же позволяет в исключительном порядке блокировать используемые для спама учетные записи, даже если они были автоматически заморожены самим ВК.
Для "обычного читателя" данный скрипт тоже может быть полезен, так как позволяет ознакамливаться с проходящими обсуждениями без каких-либо опасений по поводу возможности исчезновения ветки комментариев или записи до окончания процесса чтения.
Полагаю, функционалу скрипта есть и другие применения.
Скачивание \ установка
Скачать данный userscript можно с его страницы на itch.io.
Инструкцию по установке скриптов я уже публиковал ранее на этом блоге.