Skip to content

規則 JSON 匯入匯出 ​

設定頁最後一塊會展示當前自訂規則的 JSON。適合備份、搬運和批次編輯。

用途 ​

  • 跨裝置 / 跨帳號搬運自訂規則
  • 用版本管理工具備份規則
  • 批次編輯(在輸入框裡搜尋取代,比表單逐條改快)
  • 直接以程式構造規則陣列(腳本產生幾百條規則)

欄位結構 ​

每條規則是一個物件:

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"
}
欄位類型必填說明
namestring是彈窗顯示名稱
categorystring分類,預設 其他程式庫
kindstring類型說明,預設 自訂規則
confidence"高" / "中" / "低"預設 中
matchType"keyword" / "regex"預設 regex
patternsstring[]三選一三選一(patterns / selectors / globals 至少有一個非空)
selectorsstring[]三選一CSS 選擇器清單
globalsstring[]三選一全域變數名稱清單(window.x.y 寫成 x.y)
matchInstring[]url / resources / html / headers / dynamic 任意組合,預設全選
urlstring必須 http(s)://,可為空

操作按鈕 ​

標題列右上角有兩個按鈕:

  • 從 JSON 匯入:解析輸入框內容,驗證通過後整體取代當前自訂規則清單(不是合併)
  • 格式化:解析後用 JSON.stringify(rules, null, 2) 重新寫回,縮排整齊

字串中的反斜線 ​

JSON 裡寫正規表達式要雙重跳脫。比如要比對 \.js:

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

JSON parser 把 \\ 解成單個 \,擴充功能拿到 \.js$,傳給 new RegExp() 後才是真正的「跳脫點」。

整體驗證 ​

匯入時全陣列先 parse,任一條規則欄位不合格整個匯入會被拒絕(atomic),不會出現「半數被匯入半數被拒絕」的中間狀態。錯誤提示會指出第幾條規則的哪個欄位有問題。

與表單的關係 ​

  • 表單裡改 → 自動同步到 JSON 輸入框
  • JSON 輸入框改完 → 必須點「從 JSON 匯入」才會同步回內部規則清單
  • 不點匯入直接「儲存設定」,會用最近一次表單 / 匯入操作後的狀態儲存

數量上限 ​

CUSTOM_RULE_LIMITS.rules 預設 100。超出會被拒絕。詳見 src/types/settings.ts 的全部限制:

欄位上限
規則總數100
name80 字
category40 字
kind40 字
單條 pattern / selector / global240 字
patterns / selectors / globals 陣列長度各 80
matchIn 陣列長度8
url240 字
customCss10000 字

基於 MIT 協議發布