把华为云成长中心的每日任务做成自动化:运行时选型与判据踩坑

举报
yd_269248920 发表于 2026/11/12 00:36:46 2026/11/12
【摘要】 记录把华为云开发者成长中心的每日任务做成定时自动化的全过程:为什么必须用真实 Chrome、跨机桥的部署方式、窗口最小化导致的布局归零陷阱,以及如何用接口响应体与 URL 路由写出可证伪的成功判据。

背景

华为云开发者成长中心有一套日常任务:签到、浏览鸿蒙案例、发表博客、体验 AI DevSpace 等等。单个任务只要几十秒,但要每天记得做、还要在几个不同站点之间来回切换,实际很容易断签。我把它做成了每天定时自动执行的流程,这篇文章记录方案选型和几个真正花时间的坑。

一、运行时选型:不要用无头浏览器

最直接的想法是用无头浏览器跑脚本。实测下来这条路在登录环节就会卡住:华为云登录页带了设备指纹与验证码风控,无头环境里很容易弹滑块,一旦弹出来,后续所有步骤都无从谈起。

后来的做法是直接操作自己日常在用的那个 Chrome,通过浏览器扩展 + 本地桥接服务,把页面控制权暴露成一个可调用的工具集。同一个账号、同一出口 IP,换成真实 Chrome 之后密码登录一次通过,全程没有验证码。结论是:验证码判定的是“有没有真实渲染”,而不是“是不是 Linux”。

二、跨机桥:Chrome 和脚本不在同一台机器

我的脚本跑在一台常开的 Linux 服务器上,而日常用的 Chrome 在另一台机器。扩展默认只连 127.0.0.1,所以要改两处:扩展里的连接地址改成桥所在机器的局域网地址,桥的监听地址与端口改成环境变量控制。改完在扩展管理页“加载已解压的扩展程序”即可。

排查时最容易走错的一步是:看到“扩展没连上”就去重装扩展。实际上这句话有四种完全不同的原因——桥没跑、桥跑了但那台机没开 Chrome、Chrome 开了但没装扩展、装了但端口指错。判定方式是登录到桥所在机器,用 ss 看端口监听与已建立的连接:如果对端是非回环地址,说明扩展在另一台机器上,这时本机直连的客户端永远连不上,必须改走远端转发的那条调用链。

三、一个必须提前验证的隐藏前提

真实 Chrome 的方案有一个容易被忽略的前提:那个窗口不能被最小化。窗口最小化时标签页不做布局,innerWidth 会变成 0,所有按坐标点击、元素快照都会失效;但读取文字、执行 JS、提交表单这些不需要布局的操作依然正常。于是表现成很怪的“一半好一半坏”:登录成功了,任务按钮却点不动。

判据只有一条:读一次 innerWidth。为 0 就是窗口被最小化了,加长等待、换选择器、加重试都不会好。可以尝试新开一个标签页复测,如果仍然是 0,就只能把那个 Chrome 窗口切回前台。

四、判据要“正向证明”,不能靠“没看到失败”

这套自动化里最贵的一课是判据写法。早期用“页面里没有出现‘请填写’‘请选择’这类提示”来判断表单提交成功,结果页面上常驻一句温馨提示,导致文章明明已经发表成功、页面正在跳转的瞬间被判定为失败,连续几天都在报同一个错。

后来统一改成三种正向判据,按可靠性排序:

  1. 接口响应体里有实体 ID(例如提交博客后返回 blogId);
  2. URL 跳到了目标路由(例如完成页);
  3. 页面上出现了结构性标志(例如登录后的用户菜单节点)。

页面文案只能用来解释现象,不能用来判定成败——固定文案和真实校验错误常常在同一段文本里,正则区分不了。

五、其它几个实测细节

第一,富文本编辑器有 API 就用 API。TinyMCE 系列直接调 setContent 写正文,比自己改 iframe 的 body 再派 input 事件可靠得多,后者常常不同步,字数统计停在 0。第二,发表按钮必须用真实指针事件,脚本里合成的事件对 Vue 组件无效,页面会毫无反应。第三,正文要先于标题写入,先填标题会触发组件重渲染,把编辑器实例换掉。第四,勾选协议类控件往往不是原生 checkbox,而是一个带样式的 span,点不到它就会静默失败、没有任何提示。

结论

把日常任务自动化,难点不在业务逻辑,而在两件事:拿到一个有信任基础的浏览器环境,以及为每一步写出能被证伪的判据。前者决定了你能不能过风控,后者决定了你报的结果是真还是假。把这两件事做对之后,剩下的只是把任务清单逐条对上号而已。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。