用浏览器自动化接管重复操作:一次华为云成长中心签到的实践
一、为什么做这件事
日常开发中有很多“每天点一下”的操作:签到、浏览任务、发布内容。单次只要几十秒,但每天都会打断心流。于是我用浏览器自动化把这些步骤串起来,本文记录一次真实落地的过程与踩过的坑。
需要先说明边界:本文只针对自己账号的日常操作,不涉及多账号、刷分等行为。华为云成长中心的公告也明确禁止多账号刷分,自动化应当用来减少重复劳动,而不是绕过平台规则。
二、方案:复用已登录的浏览器,而不是模拟登录
最早考虑过 Playwright 或 Puppeteer 这类无头浏览器,但很快遇到两个问题:
1. 账号体系依赖完整登录态(Cookie、设备指纹、风控),无头环境更容易触发验证码;
2. 在脚本里保存账号密码,本身就是安全隐患。
最终采用的思路是:不碰凭据,直接复用用户已经登录的浏览器。整体是“浏览器扩展 + 本地守护进程 + 命令行”的三层结构:
• 扩展注入到现有浏览器,负责读取页面、执行点击与输入;
• 本地 daemon 通过 WebSocket 暴露控制能力;
• 命令行工具负责编排动作,例如导航、观察页面、点击元素。
这样账号密码始终由浏览器自带的密码管理器处理,自动化程序只负责“看页面、点按钮”。
三、几个关键实现点
1. 读取页面,而不是硬编码选择器
观察工具返回的是可访问性树,每个可交互元素带一个临时引用,比如登录链接、账号输入框、密码输入框。相比 CSS 选择器,这种方式更稳定:前端修改 class 名不会影响定位,只有元素语义变了才会失败。
2. 导航后引用会失效
每次页面跳转或较大的 DOM 变化,旧的元素引用都会失效。正确的做法是“动作 → 重新观察 → 再动作”,不要复用上一次的引用。
3. 先判断状态,再执行动作
签到按钮需要区分“未签到”和“已签到”。如果页面已经显示“已签到”,就不应重复点击,避免产生多余的提交。
4. 编辑器要选对模式
博客编辑器支持富文本和 Markdown 两种模式,但同一篇文章只能使用其中一种。自动化时先确定模式再填内容,能避免光标定位和格式转换带来的麻烦。
四、踩过的坑
• 登录态过期:页面可能提示“登录超时或用户已下线”,此时应停止后续动作并重新登录,而不是继续点发布。
• 隐藏的提示层:DOM 中可能同时存在多个提示框模板,观察结果里能看到但不一定可见,判断时要结合截图确认。
• 敏感词检测:发布前平台会扫描内容,命中敏感词会要求二次确认。与其“继续发布”被替换成星号,不如返回修改。
• 人机共用同一个标签页:当用户接管浏览器时,自动化动作会被拒绝。此时应等待控制权交还,而不是重放不确定的提交。
五、安全与合规边界
1. 不读取、不导出 Cookie、Token 和密码,凭据交给浏览器密码管理器;
2. 不绕过验证码、不伪造请求,所有操作都通过真实页面完成;
3. 只用于自己的单账号和真实内容发布,平台明令禁止多账号刷分;
4. 发布属于对外动作,自动化流程里应保留人工确认环节。
六、小结
浏览器自动化的价值不是“薅羊毛”,而是把每天重复、低价值的点击收敛掉,让人把精力放在真正需要判断的事情上。复用登录态、语义化读取页面、先判断状态再动作,这套组合对大多数“网页上的日常操作”都适用。
- 点赞
- 收藏
- 关注作者
评论(0)