通常我们在处理验证码的时候,通常是选择验证码的元素,用【验证码识别】指令识别元素中的文本。实际上指令先是把验证码图片截图保存下来,接着对图片进行识别得到正确的验证码。但是面对闪动的GIF验证码,截图显然是不行的,你不能保证截取下来的验证码是否完整,如下:

影刀提供的验证码识别指令,对于闪动GIF这类验证码,也仅提供“剪贴板”和“本地文件”两种图片来源,无法直接选择网页元素。

这时候我们的问题就转化为:如何把闪动的GIF验证码图片保存下来?
以下是对整个分析过程的记录:(完整的解决方案放在本文最后)
实际上,我们可以通过获取登录页面的验证码元素的src属性内容,来得到验证码图片的下载链接,接着就能把验证码直接下载下来了。
但是当我们使用【HTTP下载】指令把验证码下载下来,识别出验证码并填写到登录页面中,发现网页提示验证码有误。实际上验证码图片的识别结果是准确的,这里隐藏了一个小坑,我们继续测试分析一下原因。

如上图,页面中的验证码数字为6161,但是当我们用浏览器打开元素的src链接,发现得到的验证码数字发生了变化,说明每次对这个src链接发送请求的时候,拿到的验证码是不同的,这会导致后续识别到的验证码与网页中的验证码不一致。

但是当我手动把这个新的验证码填进网页中,却成功通过了验证:
→→→
此时提示变成了账号、密码有误,说明验证码已经通过了。
于是搭建了以下流程来下载验证码并且识别,但是却一直验证失败。

观察发现:在浏览器中打开登录页面的验证码src链接的图片,可以通过验证,但是HTTP下载拿到的验证码却不行。合理猜测通过HTTP下载的方式拿到的验证码,与网页中的验证码并不存在关联关系,所以对应不上。必须从浏览器发出请求拿到的验证码,才是页面中对应的验证码(浏览器发出的请求可能带有某些识别信息,用于与登录页面关联)。
所以得出最终的解决方案如下:

(下载步骤也可替换成这个,HTTP下载勾选对应的“登录页面”网页对象)

这里附带一个链接,感兴趣的小伙伴可以自行尝试一下,仅供学习,请勿用于其他用途。
https://mer.soopay.net/spEnterprise/authentication!login.action