影刀RPA练习题|038期 农业银行闪动gif图片验证码怎么解决?
评论
收藏

影刀RPA练习题|038期 农业银行闪动gif图片验证码怎么解决?

经验分享
小可耐教你学影刀RPA【哔哩哔哩同名】
2025-06-25 08:55·浏览量:393
小可耐教你学影刀RPA【哔哩哔哩同名】
影刀高级开发者
发布于 2025-06-25 08:55393浏览


昨天晚上遇到小伙伴咨询这个问题,

验证码是gif的图片

网址如下

https://perbank.abchina.com/EbankSite/ebank/startup?lang=zh_CN&r=A03C4736D0FF928E1F17

直接说解决办法吧,用魔法指令实现,

把gif图像下载到本地,取最后一帧画面就好了~~



代码如下

# 使用此指令前,请确保安装必要的Python库,例如使用以下命令安装:
# pip install pillow

from PIL import Image
import os

from typing import *
try:
    from xbot.app.logging import trace as print
except:
    from xbot import print


def extract_last_frame_from_gif(gif_file_path, output_file_path):
    """
    title: 提取GIF最后一帧
    description: 从GIF动图中提取最后一帧画面,并保存为静态图片文件。支持将 % gif_file_path % 的最后一帧保存到 % output_file_path % 路径。
    inputs: 
        - gif_file_path (file): GIF文件路径,eg: "C:/images/animation.gif"
        - output_file_path (str): 输出图片保存路径,eg: "C:/images/last_frame.png"
    outputs: 
        - result_path (str): 成功保存的图片路径,eg: "C:/images/last_frame.png"
    """
    
    # 1. 检查输入有效性
    if not os.path.exists(gif_file_path):
        raise FileNotFoundError(f"GIF文件不存在: {gif_file_path}")
    
    if not gif_file_path.lower().endswith('.gif'):
        raise ValueError("输入文件必须是GIF格式")
    
    # 2. 创建输出目录
    output_dir = os.path.dirname(output_file_path)
    if output_dir and not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    def _extract_last_frame(gif_path: str, output_path: str) -> str:
        """
        提取GIF最后一帧并保存
        """
        try:
            # 打开GIF文件
            with Image.open(gif_path) as gif:
                # 检查是否为动图
                if not hasattr(gif, 'n_frames') or gif.n_frames <= 1:
                    raise ValueError("文件不是有效的GIF动图")
                
                # 跳转到最后一帧
                gif.seek(gif.n_frames - 1)
                
                # 转换为RGB模式(避免调色板问题)
                last_frame = gif.convert('RGB')
                
                # 保存最后一帧
                last_frame.save(output_path)
                
                return output_path
                
        except Exception as e:
            raise RuntimeError(f"处理GIF文件时发生错误: {str(e)}")
    
    # 3. 执行提取操作
    result_path = _extract_last_frame(gif_file_path, output_file_path)
    
    return result_path

这个思路还不行 可以走人工打码通道


收藏1
全部评论1
最新
发布评论
评论