Как использовать Reddit после APIкалипсиса?
Прошлая неделя оказалась весьма плачевной для пользователей соцсети с красным пришельцем на логотипе. Протесты касательно введения новых расценок на использование API в Reddit не привели к ожидаемым результатам и почти все популярные клиенты (Sync, Infinity, Apollo, RiF, Boost и прочие) прекратили свою работу 1 июля 2023 года. Как быть, если хочется продолжать пользоваться реддитом, но официальный клиент не устраивает?
Отказываться от использования Reddit совсем я не собирался, потому что использую не только для развлечений, но и для работы (например, список «часовых бомб» от Microsoft или мониторинг 0-day уязвимостей на том же r/sysadmin), поэтому попробовал воспользоваться официальным приложением.
Что бросилось в глаза после пары лет опыта с Boost:
Общая скорость работы. Субъективно, лента и посты в Boost открывались значительно быстрее
Видеоплеер в официальном приложении стабильно работает чуть чаще, чем никогда
Рекомендованные посты могут попадаться чуть ли не каждые два-три поста (в Boost я использовал платную версию без рекламы в принципе)
Меньше способов сортировки (например, в Boost есть сортировка «Controversial», позволяющая вывести посты/комментарии с большим количеством как апвоутов, так и даунвоутов)
Общий внешний вид (который в Boost настраивается в отличии от официального приложения)
Начал думать, что можно сделать в такой ситуации. Оказалось, Reddit сохранил Free tier для API с адекватными лимитами (до 100 запросов в минуту), чего более чем достаточно для собственного использования.
Задался вопросом, а не пришла ли кому-то идея пересобрать приложение с собственным API ключом? И, к счастью, я оказался не первым человеком, которому пришла в голову эта идея. Разработчики ReVanced сделали патчи для популярных клиентов!
Как пропатчить клиент своим ключом?
Переходим на страницу управления API-ключами на Reddit.
Создаём новое приложение кнопкой «Создать приложение»
В качестве названия приложения можно указать всё, что угодно, но лучше не использовать названия заблокированных приложений. Я, например, сделал Fuckspez for Reddit. (u/spez это CEO Reddit, предположительно ответственный за изменения в API)
В качестве типа приложения нужно выбрать «Устанавливаемое приложение»
Для URI приложения нужно выставить значение в зависимости от того приложения, которое собираемся патчить. (В таблице ниже список значений для популярных клиентов, но вполне возможно что есть патчи и для других клиентов)
Приложение | URI |
Boost | http://rubenmayayo.com |
Sync | http://redditsync/auth |
RiF | redditisfun://auth |
Relay | dbrady://relay |
BaconReader | http://baconreader.com/auth |
Infinity | infinity://localhost |
Тыкаем «создать приложение» и получаем собственный ключ.
Имея ключ на руках понадобится Revanced Manager и APK-файл того приложения, которое собираемся патчить. Я использовал apps.evozi.com
Берем любимый проводник на Android (мне нравится FX File Explorer), открываем корень хранилища (Main Storage, /sdcard/ или что-то еще в зависимости от используемого устройства) и создаём там файл reddit_client_id_revanced.txt с содержимым в виде вашего API-ключа. Если всё сделано правильно, то файл будет весить ровно 22 байта.
Открываем Revanced Manager, вкладку Patcher, тыкаем Select an application и жмем в левом нижнем углу кнопку »Storage». Оттуда выбираем APK нашего приложения (в моем случае com.rubenmayayo.reddit_149.apk), убеждаемся в том, что ReVanced правильно определил ваше приложение и в списке патчей выбираем Change Oauth Client Id (можно что-то ещё по вкусу).
Тыкаем Patch, ждем окончания патчинга и надписи «Finished», тыкаем на кебаб-меню (три точки в правом верхнем углу), экспортируем .apk в удобное для себя место.
Можно удалять существующее приложение (если установлено) и устанавливать APK с патчем.
???
Вы великолепны!
После этих нехитрых действий вы снова сможете пользоваться альтернативными клиентами, но уже с собственным API ключом. Вряд ли они уже когда-то будут обновляться, но это все еще лучший вариант, нежели официальный клиент.
NSFW
Замена API ключа всё еще не позволит вам просматривать NSFW-сабреддиты, и вас будет встречать вот такое сообщение (скрин не мой)
Однако, и для этой проблемы есть решение!
Чтобы Reddit начал отдавать NSFW-контент через API, нужно объяснить сайту, что мы имеем на это моральное право. Кому может легально понадобиться просматривать NSFW? Модераторам.Создаём свой собственный сабреддит, становимся его модератором и ваш пропатченный клиент снова начнет открывать NSFW сабреддиты.
А с учетом того, что многие сабреддиты в качестве продолжения протеста отмечают свои сообщества как неприемлемые (что также делает невозможным размещение рекламы в сабреддите), совет будет особенно актуален для клиента с патчем.