Používateľské skripty majú technickú schopnosť načítať a vykonávať iné skripty. To možno vykonať niekoľkými rôznymi spôsobmi a to:
- Metadátový kľúč
@require
. XmlHttpRequest
na stiahnutie skriptu, potomeval
na vykonanie.- Pridanie značky
<script>
dynamicky. - Možnosť Webpack's
externals
.
Aj ked je to užitočná funkcia a väčšina autorov skriptov ju používa na legitímne účely, môže byť aj zneužitá. Jednou zo základných zásad Greasy Fork je, že používateľ musí mať možnosť kontrolovať kód v skripte. Externé skripty môžu túto zásadu obchádzať viacerými spôsobmi: môžu sa meniť bez varovania alebo histórie, môžu slúžiť na zobrazenie rôzneho kódu rôznym ľuďom a môžu sa používať na skrývanie škodlivého kódu uprostred známych knižníc. Aj keby niekto skontroloval externý skript a určil ho ako legitímny, nebola by to žiadna záruka, že tento skript vždy bol alebo vždy bude legitímny.
Povolený externý kód
Aby autori skriptov mohli naďalej používať externé skripty, Greasy Fork zaviedol zoznam povolených vzorov URL, ktoré môžu byť súčasťou skriptu. Tento zoznam obsahuje umiestnenia skriptov, ktoré::
- Sú verejné
- Nebude sa ich obsah často meniť
- Budú pravdepodobne užitočné pre viac ako jedného autora skriptu
Ak je skript, ktorý chcete zahrnúť, knižnica JavaScriptu (napríklad jQuery alebo YUI), skúste ju nájsť na niektorej z nižšie uvedených lokalít. Najmä cdnjs a jsDelivr majú k dispozícii širokú škálu knižníc.
Aktuálny zoznam je nasledovný:
75CDN |
^https:\/\/cdn\.baomitu\.com\/.*
|
|
75CDN |
^https:\/\/lib\.baomitu\.com\/.*
|
|
Baidu Analytics |
^https://hm\.baidu\.com/hm\.js.*
|
You must include @antifeature tracking if you use this. |
Baidu CDN |
^(https?:)?\/\/libs\.baidu\.com\/.*
|
|
Baidu CDN |
^https:\/\/apps\.bdimg\.com\/.*
|
|
Baidu CDN |
^https:\/\/code\.bdstatic\.com\/.*
|
|
BootCDN |
^https://cdn\.bootcdn\.net\/.*
|
|
Bootstrap中文网开放CDN服务 |
^(https?:)?\/\/cdn\.bootcss\.com\/.*
|
|
BowerCDN |
^https:\/\/bowercdn\.net\/.*
|
|
ByteDance |
^https:\/\/[^/]*\-cdn\-tos\.bytecdntp\.com\/cdn\/.*
|
|
cdn.kaskus.com |
^(https?:)?\/\/cdn\.kaskus\.com\/.*
|
|
cdnjs-hosted libraries |
^(https?:)?\/\/cdnjs\.cloudflare\.com\/.*
|
|
Firebase CDN |
^(https?:)?\/\/cdn\.firebase\.com\/.*
|
|
GitCDN (commit-specific URLS only) |
^https:\/\/(www\.)?gitcdn\.(xyz|link)\/(cdn|repo)\/[^/]+\/[^/]+\/[0-9a-f]{40}/.*$
|
|
gm4-polyfill |
^https:\/\/greasemonkey\.github\.io\/gm4\-polyfill\/gm4\-polyfill\.js(\?.*)?$
|
|
Google Analytics |
^https:\/\/ssl\.google\-analytics\.com\/ga\.js.*
|
You must include @antifeature tracking if you use this. |
Google Hosted Libraries on apis.google.com |
^https:\/\/apis\.google\.com\/.*
|
|
Google Hosted Libraries on googleapis.com |
^(https?:)?\/\/[a-z]+\.googleapis\.com\/.*
|
|
Google Maps API |
^(https?:)?\/\/maps\.google\.com\/maps\/api\/js.*
|
|
Google Tag Manager |
^https:\/\/www\.googletagmanager\.com\/gtag\/js.*
|
You must include @antifeature tracking if you use this. |
Google Translate |
^https:\/\/translate\.google\.com\/translate_a\/element\.js$
|
|
Google-hosted libraries on www.gstatic.com |
^https:\/\/www\.gstatic\.com\/.*
|
|
Greasy-Fork-hosted scripts (https://greasyfork.org/scripts/*.js) |
^(https?:)?\/\/greasyfork\.org\/scripts\/.+\.js.*
|
|
Greasy-Fork-hosted third party libraries on https://greasyfork.org/libraries/ |
^(https?:)?\/\/greasyfork\.org\/libraries\/.*
|
|
gwdang CDN |
^https:\/\/cdn\.gwdang\.com\/.*
|
|
gwdang_extension.js |
^https:\/\/browser\.gwdang\.com\/get\.js\?f=\/js\/gwdang_extension\.js$
|
|
Highcharts CDN |
^(https?:)?\/\/code\.highcharts\.com\/.*
|
|
jQuery on code.jquery.com |
^(https?:)?\/\/code\.jquery\.com/.*
|
|
jsDelivr GitHub commit-specific references |
^(https?:)?\/\/(cdn|test1|testingcf|fastly|gcore)\.jsdelivr\.net\/gh\/[^/]+\/[^/@]+@[a-f0-9]{40}
|
cdn.jsdelivr.net is the primary subdomain, but others are allowed in case of firewall blocks. |
jsDelivr npm version-specific references |
^(https?:)?\/\/(cdn|test1|testingcf|fastly|gcore)\.jsdelivr\.net\/npm\/.+@[0-9\.]+.*
|
cdn.jsdelivr.net is the primary subdomain, but others are allowed in case of firewall blocks. |
jsDelivr-hosted libraries |
^(https?:)?\/\/(cdn|test1|testingcf|fastly|gcore)\.jsdelivr\.net\/(?!(gh|npm)\/).*
|
cdn.jsdelivr.net is the primary subdomain, but others are allowed in case of firewall blocks. |
Layui |
https://www\.layuicdn\.com\/.*
|
|
LingoCloud |
^https:\/\/caiyunapp\.com\/dest\/trs\.js.*
|
|
MathJax CDN |
^(https?:)?\/\/cdn\.mathjax\.org\/.*
|
|
Microsoft Ajax CDN |
^(https?:)?\/\/ajax\.aspnetcdn\.com\/.*
|
|
Mousetrap |
^https:\/\/craig\.global\.ssl\.fastly\.net\/js\/mousetrap\/.*
|
|
OpenUserJS libraries |
^(https?:)?\/\/openuserjs\.org\/src\/libs\/.+\.js.*
|
|
Recaptcha |
^https://www\.google\.com/recaptcha/api\.js$
|
|
Sleazy-Fork-hosted scripts (https://greasyfork.org/scripts/*.js) |
^(https?:)?\/\/sleazyfork\.org\/scripts\/.+\.js.*
|
|
Sleazy-Fork-hosted third party libraries on https://greasyfork.org/libraries/ |
^(https?:)?\/\/sleazyfork\.org\/libraries\/.*
|
|
static.hdslb.com |
^(https?:)?\/\/static\.hdslb\.com\/.*
|
|
Todoist Anywhere |
^(https?:)?\/\/todoist\.com\/anywhere\/.*
|
|
unpkg |
^https:\/\/unpkg\.com/.*
|
|
Version-specific packd URLs |
^https:\/\/bundle\.run\/[^@]+@[0-9\.]+$
|
|
Wysibb CDN |
^(https?:)?\/\/cdn\.wysibb\.com\/.*
|
|
开放静态文件 CDN |
^(https?:)?\/\/cdn\.staticfile\.org\/.*
|
|
快手 CDN |
^https://static\.yximgs\.com/.*
|
Adresa URL je povolená Adresa URL nie je povolená
Pridane na zoznam
Ak skript, ktorý chcete zahrnúť, nie je dostupný na vyššie uvedených stránkach, dajte nám vedieť a my ho môžeme nájsť (alebo ho umiestniť sami!).
Ak ste skript, ktorý chcete zaradiť, napísali vy, môžete ho odoslať ako samostatnú položku na Greasy Fork výberom typu skriptu "Knižnica". Potom budete môcť túto zverejnenú knižnicu zahrnúť do svojho skriptu.
Špeciálne prípady
Podľa vyššie uvedeného zoznamu sú povolené aj tieto spôsoby použitia:
- Načítanie existujúceho kódu stránky na použitie na tej istej stránke (napr. použitie example.com/script.js na stránke example.com).
- Načítanie zdroja, ktorý je len dátový, napríklad súbor JSON, bez toho, aby sa čokoľvek z neho vykonalo.
Nasledujúce použitia sú tiež zakázané:
- Načítanie aktualizácií skriptu z externej adresy URL.
Presadzovanie práva
Akýkoľvek skript, o ktorom sa zistí, že obsahuje externý kód mimo povoleného rozsahu, bude odstránený.