效果展示
本文将展示如何使用Rust语言实现极验滑动验证码的自动识别。从模拟点击到识别滑动缺口、计算位移并模拟拖动滑块。如果认证失败,则重复调用直到成功。
识别思路
模拟点击切换为滑动验证,并显示验证界面。
识别滑动缺口的位置,计算位移。
模拟拖动滑块。
若认证失败,重复调用。
详细过程及代码
初始化
首先,初始化Selenium对象和一些参数配置,极验验证码测试页面的网址如下:
rust
extern crate thirtyfour;
extern crate tokio;
extern crate image;
use thirtyfour::prelude::*;
use tokio;
use image::{GenericImageView, Rgba};
use std::time::Duration;
struct CrackGeetest {
driver: WebDriver,
}
impl CrackGeetest {
async fn new() -> Self {
let caps = DesiredCapabilities::chrome();
let driver = WebDriver::new("http://localhost:9515", &caps).await.unwrap();
CrackGeetest { driver }
}
async fn open(&self) {
self.driver.get("https://www.geetest.com/type/").await.unwrap();
}
async fn close(&self) {
self.driver.quit().await.unwrap();
}
}
模拟点击
首先模拟点击切换为滑动验证,然后模拟点击弹出验证图片。
rust
impl CrackGeetest {
async fn change_to_slide(&self) -> WebElement {
self.driver.find_element(By::Css(".products-content ul > li:nth-child(2)")).await.unwrap()
}
async fn get_geetest_button(&self) -> WebElement {
self.driver.find_element(By::Css(".geetest_radar_tip")).await.unwrap()更多内容联系1436423940
}
获取背景图
首先等待验证码加载完成(wait_pic),获取网页截图(get_screenshot),然后获取验证背景图所在的位置及大小参数(get_position)和滑块对象(get_slider)。
rust
impl CrackGeetest {
async fn wait_pic(&self