早上一条失败通知,牵出两个 bug
早上九点,手机弹出一条通知:华为云的每日签到失败了,脚本没有返回结果。
这个签到挂在服务器上跑定时任务,本来不该要人管。打开日志只看到一句「可能网络或浏览器异常」,积分读出来是空的。
第一步查登录态。签到脚本靠一份导出的 cookie 自动登录,cookie 过期会直接报「需要重新登录」。但这次不是那句,而是更含糊的「脚本没有返回结果」。
含糊的报错通常意味着问题在更底下。我把脚本里调浏览器的那段单独拿出来跑了一次,真正的错误立刻浮出来:Failed to connect to ego_cli bootstrap。
跟账号无关,跟网络也无关,是浏览器本身没起来。查版本发现正在跑的是 0.6.0.22,安装目录里躺着一个已经下载好的 0.6.1.9。新版早就下完了,只是没生效,旧进程一直占着。
把进程全部结束再启动,版本变成 0.6.1.9,命令行工具马上就能连上。
这里值得记一笔:上层报错写的是「网络或浏览器异常」,很容易让人先去查网络。实际上单独跑一次最小脚本,真错误就露出来了。含糊的包装会把人往错的方向带。
签到脚本重跑,还是失败,但这次换成另一件事:unknown。
登录态是好的,积分也能读到,唯独签到动作本身失败。我把点击前后的状态都打出来:点之前 170 分、连续 4 天、按钮写着「立即签到」;点之后还是 170 分、连续 4 天、按钮还是「立即签到」。
点了,但没点中。
回头看脚本顺序就明白了。它在点签到之前先滚到页面底部读代金券库存,读完回来点击,用的还是滚动之前算好的坐标。页面已经滚走了,坐标还停在原处,鼠标点在空白上。
改成点击前重新定位一次,再跑:180 分,连续 5 天。
两个 bug,一个关于版本,一个关于坐标,共同点是都不会主动报错。第一个被上层包装成「网络异常」,第二个什么都不说——按钮点了没反应,脚本还以为自己点到了。
这类问题难查的地方不在技术本身,在于「它说它做了」。分开看每一步的真实状态,比只看最后那句结论有用得多。
- 点赞
- 收藏
- 关注作者
评论(0)