Как использовать 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 сделали патчи для популярных клиентов!

Как пропатчить клиент своим ключом?

  1. Переходим на страницу управления API-ключами на Reddit.

  2. Создаём новое приложение кнопкой «Создать приложение»

  3. В качестве названия приложения можно указать всё, что угодно, но лучше не использовать названия заблокированных приложений. Я, например, сделал Fuckspez for Reddit. (u/spez это CEO Reddit, предположительно ответственный за изменения в API)

  4. В качестве типа приложения нужно выбрать «Устанавливаемое приложение»

  5. Для URI приложения нужно выставить значение в зависимости от того приложения, которое собираемся патчить. (В таблице ниже список значений для популярных клиентов, но вполне возможно что есть патчи и для других клиентов)

Приложение

URI

Boost

http://rubenmayayo.com

Sync

http://redditsync/auth

RiF

redditisfun://auth

Relay

dbrady://relay

BaconReader

http://baconreader.com/auth

Infinity

infinity://localhost

  1. Тыкаем «создать приложение» и получаем собственный ключ.

    df836ffc4aa461527c49c8857ff7ef63.png
  2. Имея ключ на руках понадобится Revanced Manager и APK-файл того приложения, которое собираемся патчить. Я использовал apps.evozi.com

  3. Берем любимый проводник на Android (мне нравится FX File Explorer), открываем корень хранилища (Main Storage, /sdcard/ или что-то еще в зависимости от используемого устройства) и создаём там файл reddit_client_id_revanced.txt с содержимым в виде вашего API-ключа. Если всё сделано правильно, то файл будет весить ровно 22 байта.

  4. Открываем Revanced Manager, вкладку Patcher, тыкаем Select an application и жмем в левом нижнем углу кнопку »Storage». Оттуда выбираем APK нашего приложения (в моем случае com.rubenmayayo.reddit_149.apk), убеждаемся в том, что ReVanced правильно определил ваше приложение и в списке патчей выбираем Change Oauth Client Id (можно что-то ещё по вкусу).

  5. Тыкаем Patch, ждем окончания патчинга и надписи «Finished», тыкаем на кебаб-меню (три точки в правом верхнем углу), экспортируем .apk в удобное для себя место.

    50a60ca059654e7cbc1a8b427c42c3eb.jpg
  6. Можно удалять существующее приложение (если установлено) и устанавливать APK с патчем.

  7. ???

  8. Вы великолепны!

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

NSFW

Замена API ключа всё еще не позволит вам просматривать NSFW-сабреддиты, и вас будет встречать вот такое сообщение (скрин не мой)

5d476f01102143231502a5837e0ff310.png

Однако, и для этой проблемы есть решение!

Чтобы Reddit начал отдавать NSFW-контент через API, нужно объяснить сайту, что мы имеем на это моральное право. Кому может легально понадобиться просматривать NSFW? Модераторам.Создаём свой собственный сабреддит, становимся его модератором и ваш пропатченный клиент снова начнет открывать NSFW сабреддиты.

А с учетом того, что многие сабреддиты в качестве продолжения протеста отмечают свои сообщества как неприемлемые (что также делает невозможным размещение рекламы в сабреддите), совет будет особенно актуален для клиента с патчем.

© Habrahabr.ru