自动化工具可以处理重复步骤,但账号安全、身份确认和最终提交仍然需要人做决定。本文把一次自动化流程拆开,说明哪些步骤适合交给程序,哪些步骤必须停下来交给用户。
一条完整流程通常包含打开页面、读取配置、提交表单、等待结果和保存记录。前两步比较稳定,后面几步经常受到登录状态、二次验证和页面变化影响。如果把所有步骤都做成无人值守,失败时很难判断是网络问题、权限问题还是账号风控。
我现在把流程分成三个阶段。准备阶段由程序完成,确认阶段由人完成,收尾阶段再交给程序记录结果。
准备:读取任务清单、检查文件、打开目标页面
确认:登录、身份验证、权限授权、最终提交
收尾:读取结果、保存日志、生成待办这样拆分的好处是,自动化不会替用户做出不可逆的决定。用户也能在确认前看到要提交的内容和目标页面。
下面这些步骤通常不涉及敏感信息,可以交给脚本处理。
步骤 | 自动化动作 | 必要检查 |
|---|---|---|
准备文件 | 检查文件是否存在、字段是否齐全 | 文件路径和编码 |
打开页面 | 导航到用户指定的页面 | 域名是否正确 |
读取状态 | 抓取页面上的进度和提示 | 页面是否为当前账号 |
生成草稿 | 根据本地材料填入编辑器 | 标题和正文预览 |
保存记录 | 写入本地日志 | 不记录密钥和验证码 |
自动化脚本要有停止条件。例如字段缺失、页面跳到陌生域名、账号状态不明确时,脚本应当停止并把原因写出来,不能继续猜测。
密码、短信验证码、身份认证、人脸识别、支付和公开发布都属于人工确认步骤。即使页面提供了“记住登录”或“一键继续”,也要先确认账号和目标是否正确。
公开发布还需要检查四件事。文章标题是否准确,正文是否包含不该公开的信息,附件是否属于当前账号,发布后是否能正常撤回。确认完成后再点击最终提交按钮。
我用一个很小的状态机记录流程阶段。状态机只负责判断下一步能不能执行,不保存密码,也不绕过验证码。
from enum import Enum
class Stage(Enum):
PREPARE = "prepare"
WAIT_FOR_USER = "wait_for_user"
SUBMITTED = "submitted"
FAILED = "failed"
stage = Stage.PREPARE
def need_user_confirmation(page_url: str, has_sensitive_input: bool) -> bool:
allowed = page_url.startswith("SECURE_PAGE")
return (not allowed) or has_sensitive_input
TARGET_URL = "SECURE_PAGE_FROM_USER"
if need_user_confirmation(TARGET_URL, has_sensitive_input=True):
stage = Stage.WAIT_FOR_USER真正执行时,TARGET_URL 应由用户明确指定。脚本不应从日志、网页或剪贴板中猜测认证信息。
页面自动化最常见的问题来自按钮背后的动作变化。一个页面可能显示“提交成功”,但后台仍在审核;也可能保存了草稿,却没有真正公开。
所以我把验证拆成两层。第一层读取页面反馈,确认请求已经被接受。第二层重新打开结果页,确认状态和内容都属于当前账号。两层结果不一致时,保留现场截图和时间,不重复点击。
自动化的边界应该由风险决定。重复、可撤销、无敏感信息的工作适合程序处理。登录、授权、支付和公开发布要保留人工确认。把这条边界写进流程,失败时能留下证据,也能避免脚本在不清楚状态时反复操作。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。