Greasy Fork в особых случаях разрешает использование внешних скриптов. Скрипты, использующие внешние скрипты не описанными здесь способами, будут удалены. Если вы найдёте подобный скрипт, пожалуйста, сообщите о нём.
Правила распространяются только на внешний исполнимый код. Загрузка неисполнимого кода, такого как JSON или CSS, не ограничена.
Обоснование
Пользовательские скрипты имеют возможность загружать и выполнять другие скрипты. Это можно сделать разными способами:
- Посредством
@require
и@resource
. XmlHttpRequest
для загрузки скрипта и затемeval
для выполнения.- Вставка тега
<script>
динамически. externals
в Webpack.- Обновление скрипта: автоматически, или пользователем по указаниям скрипта.
Хотя эту полезную функцию большинство авторов скриптов используют в законных целях, она также может быть использована злонамеренно. Одним из основных принципов Greasy Fork является то, что пользователь должен иметь возможность проверить код скрипта. Внешние скрипты могут обойти этот принцип несколькими способами: их исходный код может меняться без предупреждения и сохранения в истории, они могут отдавать разный исходный код разным людям, вредоносный код может скрываться в середине кода известных библиотек. Даже если кто-то проверит внешний скрипт и определит его как законный, то нет гарантии, что этот скрипт всегда был и будет таковым.
Разрешённые внешние скрипты
Далее перечислены разрешённые способы использования внешних скриптов на Greasy Fork. Если не указано иное, на внешние скрипты распространяются те же правила, что и на обычный код.
Сети доставки содержимого (CDN)
Код с CDN разрешён. См. список распознаваемых CDN. Этот код может быть сжат (minified), но не зашифрован (obfuscated).
Скрипты с subresource integrity hashes
Разрешены @require
и @resource
с URL с subresource integrity в формате Tampermonkey.
Библиотеки Greasy Fork
Разрешены скрипты, размещённые на Greasy Fork как библиотеки. Библиотеку можно создать, выбрав соответствующую опцию при создании скрипта. Для библиотек можно настроить синхронизацию с внешним URL, например с репозиторием GitHub.
Вставка на сайт скриптов, находящихся на этом же сайте
Разрешена вставка внешних скриптов на сайт, если эти скрипты находятся на том же домене, что и этот сайт. Например, если скрипт, запущенный по адресу https://example.com, загружает скрипт https://example.com/script.js, меняет его и вставляет на страницу https://example.com/, то такое действие разрешено.
Если скрипт https://example.com/script.js вставляется на страницу https://differentsite.com/, то такое действие запрещено.