基于AI模型的验证码安全识别(B站,知乎等)
bilibili 汉字识别顺序验证码
实现基本思路:
先利用Selenium模拟登录,当然在这之前做好请求伪装,get方法使边框最大化,并且将系统的windows窗口缩放比例设置为100%,不推荐125%,否则可能导致xpath定位不准,使用send_key()方法导入账号密码,隐式等待验证码出现,这里B站可以获取验证码图片的URL,我们可以选择进行下载或者直接利用selenium鼠标头进行截取,之后对图片进行分割处理使之仅保留我们所需的部分,之后建立x-y平面直角坐标系,利用AI模型对其点击顺序及其个数进行识别,得出相应的坐标点,利用ActionChains 依次通过得出的坐标点进行click,定位到确认按钮进行click
这里B站有对应的url可以download,但是对应基于react框架的知乎就没有对应的url
操作实现过程
我们先导入必要的模块库
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from PIL import Image
from chaojiying import Chaojiying_Client
from selenium.webdriver.common.action_chains import ActionChains