Прошлая неделя оказалась весьма плачевной для пользователей соцсети с красным пришельцем на логотипе. Протесты касательно введения новых расценок на использование 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. Тыкаем "создать приложение" и получаем собственный ключ.

  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 в удобное для себя место.

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

  7. ???

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

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

NSFW

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

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

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

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

Комментарии (12)


  1. aldekotan
    14.07.2023 01:37

    Инструкция выше не означает, что какой-нибудь условный Apollo app мог бы продолжить работу, используя ваш способ в масштабе значимой части своих пользователей?


    1. Crimento Автор
      14.07.2023 01:37

      Способ не мой, я всего лишь сделал подробную инструкцию :)

      Теоретически да, но тот же Ruben Mayayo (разработчик Boost) писал, что риски слишком большие, а что будет дальше вообще не понятно.

      Для многих разрабов в уходе с реддита есть еще и психологическая часть, закрытие клиентов это во многом показательный протест против платформы, которая игнорирует желания своей корневой аудитории (контент-мейкеры, модераторы) ради прибыли.

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


    1. dartraiden
      14.07.2023 01:37
      +2

      Это обсуждалось на реддите, разработчики выдвинули аргументы против:


      • ключи выдаются вручную, как только практика набрала бы заметные обороты — легко прикрыли бы лавочку;
      • процесс слишком сложен для того, чтобы им воспользовалась настолько значимая часть пользователей, чтобы это имело экономический смысл для разработчика. Для рядового пользователя Android все эти реванседы, апки и патчи — тёмный лес. В iOS всё ещё сложнее, даже просто поставить приложение не из стора — отдельный квест;
      • NSFW-контент через API не доступен, что тоже снижает число пользователей;
      • тратить своё время на разработку для ресурса, который буквально говорит тебе "пошёл вон" — себя не уважать.


  1. nelld
    14.07.2023 01:37

    У меня до сих пор работает infinity. ЧЯДНТ?


    1. Crimento Автор
      14.07.2023 01:37

      Скорее всего, ключ из опубликованного приложения еще не был деактивирован (тот же Boost тоже работал дольше "положенного", хоть и планировал закрыться 1 июля). Разработчики отключают свои приложения не потому, что API перестало работать, а из-за изменения расценок


  1. flower72
    14.07.2023 01:37
    +3

    Никак. Никогда там не сидел и не собираюсь


    1. NclR
      14.07.2023 01:37
      +8

      Продолжайте держать нас в курсе)


  1. Sergey_Kovalenko
    14.07.2023 01:37

    Вот тебе на, а я только свой блог на реддите завел (. Интересно, какой процент пользователей уйдет, насколько процентов оставшиеся будут проявлять меньше активности и куда летят утки?


  1. Antom
    14.07.2023 01:37

    пришелец белый


  1. duott-daenur
    14.07.2023 01:37

    Не пользоваться мобильными приложениями и сидеть с компа


  1. Cregennan
    14.07.2023 01:37

    Можно ли создать кастомный клиент, который использует авторизацию родного клиента? Например, VTosters, Sova ВК принимает за нативные клиенты


  1. Nasreddin_Hodja
    14.07.2023 01:37

    100 queries per minute per OAuth client id if you are using OAuth authentication

    10 queries per minute if you are not using OAuth authentication

    Не пойму, то ли ограничения ещё не вступили в силу, то ли ограничения дейстуют не на все методы API, я в этой штуке не использую OAuth, но ничего не заблочилось и после 10 запросов. Ключи для доступа к API не используются.