- PVSM.RU - https://www.pvsm.ru -

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

Предыстория

Привет!

К написанию этого поста привела довольно странная ошибка, которую вчера вечером на ноутбуке с 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 [1] — достаточно известная открытая [2] утилита для работы с облачными хранилищами (неоднократно раз [3], два [4], три [5] упоминалась на Хабре). Автор называет её "rsync for cloud storage", что довольно ёмко. Но этим функциональность не ограничивается: помимо функций rsync она ещё может монтировать диски, выполнять функцию ncdu (что, кстати, мне позволило однажды обнаружить неправильный подсчёт свободного места на Яндекс.Диске и успешно решить эту проблему через техподдержку), а также кучу всего ещё. Утилита поддерживает как десятки облачных хранилищ, так и более традиционные протоколы — WebDAV, FTP, rsync и другие. Для доступа к Яндес.Диску утилита использует официальный публичный API [6] Диска.

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

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

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

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

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

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

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

Я:

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

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

Поддержка:

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

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

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

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

Я:

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

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

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

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

Поддержка:

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

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

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

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

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

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

Выводы?

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

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

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

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

Что делать?

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

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

Автор: Sergey

Источник [18]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/347397

Ссылки в тексте:

[1] rclone: https://rclone.org/

[2] открытая: https://github.com/rclone/rclone/blob/master/COPYING

[3] раз: https://habr.com/ru/company/pc-administrator/blog/468559/

[4] два: https://habr.com/ru/company/selectel/blog/305514/

[5] три: https://habr.com/ru/company/southbridge/blog/454734/

[6] официальный публичный API: https://yandex.ru/dev/disk/

[7] баг в официальном гитхабе: https://github.com/rclone/rclone/issues/3989

[8] официальном форуме: https://forum.rclone.org/t/yandexdisk-problem/14478

[9] опубликован на том же форуме: https://forum.rclone.org/t/yandexdisk-problem/14478/5

[10] правилах самого диска: https://yandex.ru/legal/disk_termsofuse/

[11] публичного API: https://yandex.ru/legal/disk_api/

[12] https://yandex.ru/legal/rules/: https://yandex.ru/legal/rules/

[13] https://yandex.ru/legal/disk_termsofuse: https://yandex.ru/legal/disk_termsofuse

[14] https://cloud.yandex.ru: https://cloud.yandex.ru

[15] https://habr.com/ru/post/480090/: https://habr.com/ru/post/480090/

[16] bobuk: https://habr.com/ru/users/bobuk/

[17] посте здесь на Хабре: https://habr.com/ru/company/yandex/blog/480090/

[18] Источник: https://habr.com/ru/post/489492/?utm_source=habrahabr&utm_medium=rss&utm_campaign=489492