Cindy 能直接接手我已登录的浏览器吗 / 先看它的操作回放和权限开关

文章导读
“已登录”这件事的关键不在浏览器窗口,而在 Cindy 读的是哪一份浏览器配置目录(profile)。多数自动化工具默认使用自己新建或指定的 profile,不会直接挂到你日常在用的那份上;但只要配置里把 user_data_dir 指到了你的日常目录,登录态就是共用的,它点一下就等于你点一下。所以判断路径只有一条:先定位 profile 目录,再把域名和控件收敛成白名单,最后用一条只读任务的操作
📋 目录
  1. 一 找到 Cindy 读取的浏览器配置目录
  2. 二 把可访问域名和可操作控件列成白名单
  3. 三 跑一条只读任务并打开操作回放
  4. 四 对照白名单检查回放中有没有越界请求
  5. 五 把确认过的配置存成一份可复用文件
A A

“已登录”这件事的关键不在浏览器窗口,而在 Cindy 读的是哪一份浏览器配置目录(profile)。多数自动化工具默认使用自己新建或指定的 profile,不会直接挂到你日常在用的那份上;但只要配置里把 user_data_dir 指到了你的日常目录,登录态就是共用的,它点一下就等于你点一下。所以判断路径只有一条:先定位 profile 目录,再把域名和控件收敛成白名单,最后用一条只读任务的操作回放去核对它实际做了什么。三处对得上,才算确认过权限边界;对不上,先别给它带登录态的任务。

判断 Cindy 会不会动到你日常会话,不看它“支不支持登录态”,而看三处可验证的东西:配置里指向的 profile 路径、域名与控件白名单是否真的收敛、回放里记录的 URL 与动作是否越界。建议给 Cindy 单独复制一份 profile 目录,日常那份只读不写;白名单从默认放开改成明确清单后,必须跑一次只读任务看回放是否真的被拦。凡是回放里出现白名单外的域名或未授权控件,先改配置再谈复用。以上结论只适用于能在配置、日志、回放页面里看到证据的环境,看不到就别假设它没有动作。

找到 Cindy 读取的浏览器配置目录

先在配置文件里找浏览器相关的段落,常见字段名是 user_data_dir、profile_dir 或 browser.profile,具体名字以你手上的配置为准。找不到就去启动脚本里看有没有 `--user-data-dir` 这类启动参数,它通常比配置文件优先级更高,容易被忽略。

确认路径的办法是打开被控浏览器后访问 chrome://version(或对应内核的版本页),看“个人资料路径 / Profile Path”那一行,把它和配置里的值逐字比对,注意符号链接和相对路径会被解析成不同的真实目录。改动前先记录一份现状:对目录执行 ls -l 保存列表,或者在 profile 目录里放一个带时间戳的标记文件,改动重启后再看这份列表有没有变化、标记文件是否出现在预期目录里。如果发现配置指向的是你日常使用的目录,先复制一份出来再改指向,不要直接在上面做实验。

Cindy 能直接接手我已登录的浏览器吗 / 先看它的操作回放和权限开关
browser:
  # 建议指向独立副本,而不是日常在用的那份
  user_data_dir: /path/to/cindy-profile
  # 是否复用已有登录态,按实现可能叫 reuse_session / persistent_context
  reuse_session: true

把可访问域名和可操作控件列成白名单

权限收敛的做法是把“默认允许”改成“只允许清单内”。域名白名单一般写到主机级,必要时带路径前缀;控件白名单按可交互元素描述,可以是选择器、角色加名称,或页面区域。下面是通用骨架,字段名需要按实际配置替换。

allowlist:
  domains:
    - host: example.com
      paths: ["/", "/account"]
    - host: docs.example.com
  controls:
    - action: click
      target: "button[data-role=search]"
    - action: type
      target: "input[name=q]"
  # 若存在“默认放行”类开关,确认它是关闭状态
  default_policy: deny

不在名单内的表现要实际看一眼:导航到未授权域名通常会被拦截并返回类似 blocked_by_policy 的错误码,回放里对应动作的结果状态不是成功;对未授权控件做点击,可能表现为选择器找不到、动作被拒绝,或干脆没有任何效果。这几种现象在不同实现上不一样,需要结合日志确认是哪一种,别把“没报错”当成“没执行”。

Cindy 能直接接手我已登录的浏览器吗 / 先看它的操作回放和权限开关

跑一条只读任务并打开操作回放

用一条不改状态的任务试水:打开目标页、读取标题或一段文本、截一张图,全程不提交表单、不点删除类按钮。任务结束后打开操作回放,重点看四个字段:页面地址,是否只落在白名单域名内;动作类型,是导航、点击、输入还是滚动;时间点,用来对齐同一时刻的日志和网络请求;结果状态,是成功、被拒绝还是超时。回放里如果只记录成功动作,被拦截的尝试可能看不到,这时要同时对照运行日志里的拦截记录,否则会误判成“它没试过”。

对照白名单检查回放中有没有越界请求

把回放里的页面地址逐条抽出来,和配置里的域名清单做前缀匹配,注意 a.example.com 与 example.com 是两条不同条目,子域是否放行要写清楚。再拿动作类型和控件白名单逐条对:点击目标是否在名单里,输入落在哪个输入框,滚动发生在哪个页面。越界的典型现象是回放里出现清单外域名、出现清单外控件的点击,或者页面实际跳转了但状态标成被拒绝——最后一种说明拦截发生在动作之后,等于没拦住。发现越界要回头改三处:域名清单是否漏了必要条目、控件清单是否过宽、以及有没有残留的默认放行开关。

Cindy 能直接接手我已登录的浏览器吗 / 先看它的操作回放和权限开关

把确认过的配置存成一份可复用文件

核对通过后,把配置固定成一份文件,下次启动用参数显式指定,例如 `--config` ./config/cindy.profile.yaml。文件建议至少包含三段:浏览器段写死 profile 路径与是否复用登录态,白名单段写域名与控件清单,回放段指定回放和日志的落盘目录,方便下次直接复查。存放位置放在项目目录内或用户配置目录下都可以,关键是路径写绝对路径,避免换工作目录后读到另一份。

确认加载成功不要靠猜:启动日志一般会打印实际加载的配置文件路径和生效的规则条数,把这两项和文件内容对一遍;再跑一次前面那条只读任务,看回放是否仍按新配置拦截。只要能重复出同样的拦截结果,这份文件才算可复用。