Skip to content

脚本注入(injects)

概述

injects 用于在指定路径的 HTML 页面中注入脚本,适合第三方应用最小侵入适配。此功能需要 lzcos 1.5.0+。

匹配规则

  • paths 为空:匹配所有路径
  • paths 不为空:任意前缀匹配即可
  • 命中后如再匹配 exclude 任一前缀,则不注入
  • prefix_domain 不为空时,仅匹配域名前缀为 <prefix>- 的请求
  • injects 条目按声明顺序执行;每个条目内 scripts 也按顺序注入

脚本来源

scripts[].src 支持以下形式:

  • builtin://name 使用 lzcinit 内置脚本
  • file:///path 加载应用文件系统内脚本(通常在 /lzcapp/pkg/content/
  • http(s)://... 远程脚本(建议仅用于调试)

参数注入

scripts[].params 会以闭包参数注入到脚本中,脚本内读取 __LZC_INJECT_PARAMS__ 即可。

示例(脚本侧):

js
(() => {
  const params = __LZC_INJECT_PARAMS__ || {};
  const user = params.user || "";
  const password = params.password || "";
  if (user) {
    console.log("user:", user);
  }
})();
(() => {
  const params = __LZC_INJECT_PARAMS__ || {};
  const user = params.user || "";
  const password = params.password || "";
  if (user) {
    console.log("user:", user);
  }
})();

使用建议

  • 强烈建议将 paths 精确限定在登录页等必要路径
  • 对 API 或静态资源路径使用 exclude 避免误注入
  • 远程脚本仅建议调试使用,正式发布建议改为 builtin://file://
  • 若页面存在严格 CSP 限制,注入脚本可能无法执行

内置脚本

builtin://hello

打印调试信息。

参数:

  • message:输出内容,默认 hello world

builtin://simple-inject-password

自动填充账号/密码,并可选自动提交。建议仅在明确登录路径下注入。

参数说明(params):

参数类型说明
userstring账号值
passwordstring密码值
requireUserbool是否必须找到账号输入框,默认当 user 非空时为 true
allowPasswordOnlybool允许仅填充密码,默认 false
userSelectorstring显式指定账号输入框选择器
passwordSelectorstring显式指定密码输入框选择器
formSelectorstring限定在指定容器内搜索输入框
submitSelectorstring显式指定提交按钮选择器
autoSubmitbool是否自动提交,默认 true
submitModestring提交模式:auto/requestSubmit/click/enter,默认 auto
retryCountint自动提交重试次数,默认 10
retryIntervalMsint自动提交重试间隔(毫秒),默认 300
observerTimeoutMsintMutationObserver 超时(毫秒),默认 8000
eventSequencestring[]string触发事件序列,默认 input,change,keydown,keyup,blur
keyValuestring触发键盘事件时的按键值,默认 a
allowHiddenbool允许填充不可见输入框,默认 false
allowReadOnlybool允许填充只读输入框,默认 false
onlyFillEmptybool仅当输入框为空时才填充,默认 false
allowNewPasswordbool允许填充 autocomplete=new-password 的密码框,默认 false
includeShadowDombool是否搜索开放的 Shadow DOM,默认 false
shadowDomMaxDepthintShadow DOM 最大递归深度,默认 2
preferSameFormbool优先选择与密码框同一表单内的账号框,默认 true
userKeywordsstring[]string追加账号字段关键词(逗号分隔或数组)
userExcludeKeywordsstring[]string追加账号字段排除关键词
passwordKeywordsstring[]string追加密码字段关键词
passwordExcludeKeywordsstring[]string追加密码字段排除关键词
submitKeywordsstring[]string追加提交按钮关键词

示例:

yml
application:
  injects:
    - id: login-autofill
      paths:
        - /login
      scripts:
        - src: builtin://simple-inject-password
          params:
            user: "admin"
            password: "admin123"
            autoSubmit: true
            submitMode: "auto"
            userSelector: "#username"
            passwordSelector: "#password"
            submitKeywords: "login,signin,continue"
application:
  injects:
    - id: login-autofill
      paths:
        - /login
      scripts:
        - src: builtin://simple-inject-password
          params:
            user: "admin"
            password: "admin123"
            autoSubmit: true
            submitMode: "auto"
            userSelector: "#username"
            passwordSelector: "#password"
            submitKeywords: "login,signin,continue"