Skip to content

Import a export pravidel JSON ​

Poslední sekce stránky nastavení zobrazuje JSON aktuálních vlastních pravidel. Hodí se pro zálohování, přenos a hromadné úpravy.

Použití ​

  • Přenos vlastních pravidel mezi zařízeními / účty
  • Zálohování pravidel pomocí nástrojů pro správu verzí
  • Hromadné úpravy (vyhledávání a nahrazování v textovém poli je rychlejší než úprava pravidel po jednom)
  • Programové sestavování pravidel (skript vygeneruje stovky pravidel)

Struktura polí ​

Každé pravidlo je objekt:

json
{
  "name": "MyCMS",
  "category": "网站程序",
  "kind": "自定义 CMS",
  "confidence": "中",
  "matchType": "regex",
  "patterns": ["mycms-[0-9.]+\\.js", "X-Generator: MyCMS"],
  "selectors": ["[data-powered-by='mycms']"],
  "globals": ["MyCMS"],
  "matchIn": ["url", "resources", "html", "headers", "dynamic"],
  "url": "https://mycms.example.com"
}
PoleTypPovinnéPopis
namestringanoNázev zobrazený ve vyskakovacím okně
categorystringKategorie. Výchozí: 其他库
kindstringPopis typu. Výchozí: 自定义规则
confidence"高" / "中" / "低"Výchozí: 中
matchType"keyword" / "regex"Výchozí: regex
patternsstring[]jedno ze tříZe tří polí (patterns / selectors / globals) musí být alespoň jedno neprázdné
selectorsstring[]jedno ze tříSeznam CSS selektorů
globalsstring[]jedno ze tříNázvy globálních proměnných (window.x.y se zapíše jako x.y)
matchInstring[]Libovolná kombinace url / resources / html / headers / dynamic. Výchozí: vše
urlstringMusí začínat http(s)://; může být prázdné

Tlačítka ​

V pravém horním rohu záhlaví jsou dvě tlačítka:

  • Importovat z JSON: zpracuje obsah textového pole a po úspěšném ověření celý seznam vlastních pravidel nahradí (není to sloučení)
  • Formátovat: zpracuje JSON a přepíše jej jako JSON.stringify(rules, null, 2) s upraveným odsazením

Zpětná lomítka v řetězcích ​

Pro zápis regulárních výrazů v JSON je nutné dvojité escapování. Příklad pro shodu s \.js:

json
{
  "matchType": "regex",
  "patterns": ["\\.js$"]
}

JSON parser převede \\ na jedno \; rozšíření obdrží \.js$, které teprve po předání do new RegExp() funguje jako „escapovaná tečka".

Celkové ověření ​

Při importu se nejprve zpracuje celé pole; pokud má jakékoli pravidlo neplatné pole, celý import se odmítne (atomicky) — nikdy nedojde k situaci, kdy je importována jen část pravidel. Chybová zpráva uvede, které pravidlo a které pole je problematické.

Vztah k formuláři ​

  • Změny v formuláři → automaticky se promítnou do textového pole JSON
  • Změny v textovém poli JSON → je nutné kliknout na „Importovat z JSON", aby se promítly zpět do interního seznamu pravidel
  • Přímé kliknutí na „Uložit nastavení" bez předchozího importu uloží stav z poslední operace formuláře / importu

Limit počtu pravidel ​

Výchozí hodnota CUSTOM_RULE_LIMITS.rules je 100. Překročení bude odmítnuto. Kompletní přehled limitů je v souboru src/types/settings.ts:

PoleLimit
Celkový počet pravidel100
name80 znaků
category40 znaků
kind40 znaků
Jeden pattern / selektor / globální proměnná240 znaků
Délka polí patterns / selectors / globals80 každé
Délka pole matchIn8
url240 znaků
customCss10 000 znaků

Vydáno pod MIT