Selenium+Java自动化之如何优雅绕过验证码

2021-10-26 13:45:47 浏览数 (1)

今天为大家分享的是,如何优雅的绕过登录中的验证码。

验证码问题,对于每个做自动化测试的同学而言,都是一个非常烧脑的问题。

对于验证码的处理,我个人不提倡破解。当然,也不要去想破解方法。

为什么呢?

验证码,本来就是为了防止别人恶意登录的,如果被你就这么轻易破解了,那么只能说你们公司验证码安全级别不高。

更尴尬的事,还需要你去提bug,和开发说验证码太容易破解了,安全级别太低,你脑补下这样的场景,是不是很刺激,哈哈。

对于验证码,要么是让开发把验证码写死(也就是传说中的万能验证码),如:1234,要么就是低调的尽量绕过去。

下面本文来介绍下如何绕过下图验证码,进入博客园。

如何操作?

看完之后,记得收藏 转发。

---正经分割线---

一、使用Fiddler抓包

1、一般登陆网站成功后,会生成一个已登录状态的cookie,那么只需要直接把这个值拿到,用Selenium进行addCookie操作即可。

2、可以先手动登录一次,然后通过抓包抓取这个cookie,这里我们就需要用抓包工具fiddler了。

3、先打开博客园登录界面,手动输入账号和密码(不要点登录按钮)。

4、打开fiddler抓包工具,此时再点登录按钮

5、登录成功后,再查看cookie变化,发现多了两组参数,多的这两组参数就是我们想要的,copy出来,一会有用。

二、cookie操作

1、这里需要添加两个cookie,一个是.CNBlogsCookie,另外一个是.Cnblogs.AspNetCore.Cookies

2、我这里打开的网页是博客园的首页:https://home.cnblogs.com/,没进入登录页。

3、添加cookie后刷新,接下来就是见证奇迹的时刻了。

4、关于cookie操作,有兴趣的同学可查看官方api

5、这里我们只使用addCookie这个接口的方法实现。

代码语言:javascript复制
Cookie cookie=new Cookie("key", "value");
driver.manage().addCookie(cookie);

三、参考代码

整合上面思路,我们来个总结的代码,示例代码如下:

代码语言:javascript复制
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * @author longrong.lang
 * 绕过验证码登陆
 */
public class LoginWithCookie {

    WebDriver driver;

    @BeforeClass
    public void beforeClass() {
        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
        driver = new ChromeDriver();

    }

    @Test
    public void testLoginWithCookie() {
        driver.get("https://home.cnblogs.com/");
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        //cookie遍历使用
        Set<Cookie> cookies = driver.manage().getCookies();
        for (Cookie cookie : cookies) {
            System.out.println(cookie.getName()   "t"   cookie.getValue());
        }
        Cookie cookie = new Cookie("key", "value");
        //添加cookie操作
        driver.manage().addCookie(cookie);
        Cookie cookie1 = new Cookie("key", "value");
        driver.manage().addCookie(cookie1);
        Cookie cookie2 = new Cookie(".key", "value");
        driver.manage().addCookie(cookie2);
        Cookie cookie3 = new Cookie("key", "value");
        driver.manage().addCookie(cookie3);
        driver.manage().window().maximize();
        //下面是见证奇迹的时候了
        driver.navigate().refresh();
    }

    @AfterClass
    public void afterClass() {
        //driver.quit();
    }

}

运行效果如下所示:

视频效果如下:

有几点需要注意:

0 人点赞