微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

走心原创第15期

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

前言

验证码问题对于每个ui自动化的同学而言,相信都是个蛋疼的问题,对于验证码的处理我个人不提倡破解,不要去想破解方法,这个验证码本来就是为了防止别人自动登录的。如果你们公司的验证码很容易被你破解了,那么只能说你们公司验证码级别不高,去建议开发提高验证码级别了。
对于验证码,要么是让开发把验证码写死(传说中的万能验证码),如:1234,要么就是低调的尽量绕过去。
下面本文来介绍下如何绕过下图验证码,进入博客

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

工具
fiddler.exe
IDEA/Eclipse
selenium的cookie操作
一、使用fiddler抓包
1.一般登陆网站成功后,会生成一个登录状态的cookie,那么只需要直接把这个值拿到,用selenium进行addCookie操作即可。
2.可以先手动登录一次,然后抓取这个cookie,这里我们就需要用抓包工具fiddler了
3.先打开博客登录界面,手动输入账号和密码(不要点登录按钮)

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

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

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

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

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


二、cookie操作
1.这里需要添加两个cookie,一个是.CNBlogsCookie,另外一个是.Cnblogs.AspNetCore.Cookies。
2.我这里打开的网页是博客园子的首页https://home.cnblogs.com/,没进入登录页
3.添加cookie后刷新,接下来就是见证奇迹的时刻了。
4.关于cookie操作,有兴趣的同学可查看官方api
5.这里我们只使用addCookie这个接口的方法实现
Cookie cookie=new Cookie("key", "value"); driver.manage().addCookie(cookie);
三、参考代码

package com.test.demo;

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() {
        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();
    }
}

效果图:

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


视频效果如下:

有几点需要注意:
1.登录时候要勾选下次自动登录按钮。
2.addCookie()只添加name和value,对于博客园的登录是不成功。
3.本方法并不适合所有的网站,一般像博客园这种记住登录状态的才会适合。
4.学习过程中有遇到疑问的,可以加QQ群交流:631646987

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

  • End -
    作者:脑洞大大的吃货狮子座,喜欢专研技术,勤于总结归纳,用文字结交朋友,擅长与生活相爱相杀,乐于分享一个技术狂人。
    软 件 测 试 君

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

听 说 看 了 这 个 号 可 以 干 掉 领 导

· 猜你喜欢的文章 ·

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐