Яндекс.Диск запретил использование open source утилиты rclone

?v=1

Предыстория

Привет, Хабр!

К написанию этого поста привела довольно странная ошибка, которую вчера вечером на ноутбуке с Linux (да, я их тех странных людей, кто использует GNU/Linux на ноутбуке) я получил вместо содержимого своего Яндекс.Диска:

$ ls -l /mnt/yadisk
ls: reading directory '.': Input/output error
total 0

Первая мысль: сеть отвалилась, ничего страшного. Но при попытке перемонтировать директорию появилась новая ошибка:

$ sudo umount /mnt/yadisk && rclone mount --timeout 30m ya:/ /mnt/yadisk
2020/02/21 20:54:26 ERROR : /: Dir.Stat error: [401 - UnauthorizedError] Unauthorized (Не авторизован.)

Это было уже странно. Токен протух? Не беда, авторизую заново!

$ rclone config
... (опущу тут весь вывод терминала) ..

После перехода на веб и попытки авторизоваться там получаю уже более конкретное сообщение:


Это приложение заблокировано за вредоносные действия, поэтому доступ не разрешён (unauthorized_client).

Первая мысль: чтоооо?


О rclone

Немного справки:
rclone — достаточно известная открытая утилита для работы с облачными хранилищами (неоднократно раз, два, три упоминалась на Хабре). Автор называет её «rsync for cloud storage», что довольно ёмко. Но этим функциональность не ограничивается: помимо функций rsync она ещё может монтировать диски, выполнять функцию ncdu (что, кстати, мне позволило однажды обнаружить неправильный подсчёт свободного места на Яндекс.Диске и успешно решить эту проблему через техподдержку), а также кучу всего ещё. Утилита поддерживает как десятки облачных хранилищ, так и более традиционные протоколы — WebDAV, FTP, rsync и другие. Для доступа к Яндес.Диску утилита использует официальный публичный API Диска.

Утилита поистине уникальна и (по моему мнению) представляет из себя тот класс программ, которые ставишь один раз, а пользу они приносят постоянно.


Что произошло?

Обратившись к Google я сразу понял, что не одинок. Есть баг в официальном гитхабе, а также обсуждение на официальном форуме.
Краткое содержание: client id утилиты заблокирован Яндекс.Диском, из-за чего авторизоваться больше нельзя. Можно попробовать поменять client id, но не факт, что та же участь не постигнет и новый id.
Ответ поддержки опубликован на том же форуме:


Дело в том, что программа Rclone позволяет использовать Яндекс.Диск в качестве инфраструктурного компонента, а Яндекс.Диск — это персональный сервис, который не рассчитан на решение таких задач. Поэтому мы не поддерживаем работу связки Rclone — Яндекс.Диск.

«Инфраструктурный компонент»? Ну раз нельзя, то наверное это описано в правилах подумал я и ничего такого в правилах самого диска или его публичного API я не нашёл.

Ладно, напишем в поддержку.
Первый ответ прилетает 1 в 1 тот, что опубликован выше (про «инфраструктурный компонент»). Окей, мы не гордые.


Дальнейшая переписка с поддержкой

Я:


А подскажите пожалуйста, какое правило сервиса это нарушает?
Я изучил условия использования Яндекс диска и никаких запретов на использование «в качестве инфраструктурного компонента» там нет.

Более того, я не могу использовать утилиту с личного ноутбука для работы с диском. Это уже совсем никак под » инфраструктурный компонент» не подпадает. Штатный клиент диска ужасен, уж простите.

Поддержка:


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

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

Вы можете ознакомиться с документами, регулирующими использование сервиса, в частности «Пользовательским соглашением сервисов Яндекса», опубликованным по адресу: https://yandex.ru/legal/rules/, а также «Условиями использования сервиса «Яндекс.Диск»: https://yandex.ru/legal/disk_termsofuse

Для решения задач, которые требуют больших мощностей, мы рекомендуем использовать Яндекс.Облако. Это другой облачный сервис Яндекса, который создан для решения задач бизнеса. Узнать больше о Яндекс.Облаке можно тут: https://cloud.yandex.ru

Я:


Вы не ответили на мой вопрос. Подскажите пожалуйста, какой пункт правил сервиса нарушает использование rclone? Я внимательно изучил правила по вашей ссылке (ещё до того, как вы из прислали).

Совсем недавно вы писали пост, что Яндекс всячески поддерживает OpenSource и без OpenSource Яндекса и современного интернета бы не было (https://habr.com/ru/post/480090/).

А теперь вы блокируете OpenSource утилиту по надуманной причине.

Кстати, программа не осуществляет «загрузку резервных копий в автоматическом режиме», программа предназначена для работы с облачными хранилищами, в том числе для синхронизации данных между компьютером и Яндекс.Диском. И этой мой основной use-case утилиты, который теперь недоступен.

Поддержка:


Согласно п. 3.1. «Пользовательского соглашения» Яндекс вправе устанавливать ограничения в использовании сервисов для всех Пользователей, либо для отдельных категорий Пользователей (в зависимости от места пребывания Пользователя, языка, на котором предоставляется сервис и т.д.), в том числе: наличие/отсутствие отдельных функций сервиса, срок хранения почтовых сообщений в сервисе Яндекс.Почта, любого другого контента, максимальное количество сообщений, которые могут быть отправлены или получены одним зарегистрированным пользователем, максимальный размер почтового сообщения или дискового пространства, максимальное количество обращений к сервису за указанный период времени, максимальный срок хранения контента, специальные параметры загружаемого контента и т.д. Яндекс может запретить автоматическое обращение к своим сервисам, а также прекратить прием любой информации, сгенерированной автоматически (например, почтового спама).

Пользователь также предупреждается об этом в п. 4.6. «Условий использования Яндекс.Диска».

Обратите внимание, что «Условия использования Яндекс.Диска» также устанавливают для Пользователя обязанность действовать добросовестно и воздержаться от злоупотребления функциями Сервиса. Пользователь в том числе обязуется воздержаться от организации массового файлообмена с использованием функций Сервиса.

Яндекс имеет право применять правила, лимиты и ограничения, направленные на предотвращение, ограничение и пресечение массового файлообмена по правилам п. 4.5. настоящих «Условий».

Последний ответ привнёс ясности. Особенно, первые два абзаца со ссылкой на п. 3.1. «Пользовательского соглашения» Яндекс и п. 4.6. «Условий использования Яндекс.Диска». Текст 4.6 тут не приведён, приведу:


4.6. Яндекс оставляет за собой право устанавливать любые правила, лимиты и ограничения (технические, юридические, организационные или иные) на использование Сервиса, и может менять их по собственному усмотрению, без предварительного уведомления Пользователя. В случаях, когда это не запрещено законодательством, указанные правила, лимиты и ограничения могут быть различными для различных категорий Пользователей.
Итого уже принёс понимание что произошло: заблокировать могут что угодно и какого угодно просто по желанию и без какой-либо причины.


Выводы?

Совсем недавно уважаемый bobuk в своём посте здесь на Хабре писал, что Яндекс считает, что:


Мы в Яндексе считаем, что современный интернет невозможен без культуры open source и людей, которые инвестируют свое время в разработку программ с открытым кодом.

А на практике получается совсем иначе. Отличную утилиту блокируют за что-то, что не запрещено правилами сервиса. За то, что утилита позволяет использовать открытый публичный API Диска по прямому назначению — загружать файлы. Блокируют не за нарушение правил сервиса, а потому что могут.
Вдвойне странно то, что заблокированы не конкретные нарушители правил (тоже непонятно каких, в правилах использование диска для резервных копий нигде не запрещено). Заблокирован инструмент, функция осуществления резервного копирования в котором лишь одна из многих.

Что такое инфраструктурный компонент и почему их нельзя использовать с диском тоже не понятно. Даже браузер может быть использован как «инфраструктурный компонент», не стоит ли запретить пользоваться диском в браузере?


Что делать?

Пока использовать свой client id и жить дальше. Но, судя по ответу техподдержки, можно ждать продолжения охоты на ведьм и блокировки также других client id, user-agent rclone или, даже, какие-то эвристические способы заблокировать утилиту.

P.S. Я искренне надеюсь, что имела места простая ошибка или недопонимание. В Яндексе работают отличные специалисты (много с кем я знаком лично) и среди них, уверен, есть пользователи rclone.

© Habrahabr.ru