前言:

验证码问题对于每个ui自动化的同学而言,相信都是个蛋疼的问题,对于验证码的处理我个人不提倡破解,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的。如果你们公司的验证码很容易被你破解了,那么只能说你们公司验证码级别不高,去建议开发提高验证码级别了。

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

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

工具:

  • Fiddler.exe
  • IDEA/Eclipse
  • selenium的cookie操作

一、使用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这个接口的方法实现

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

效果图:

有几点需要注意:

1.登录时候要勾选下次自动登录按钮。

2.add_cookie()只添加name和value,对于博客园的登录是不成功。

3.本方法并不适合所有的网站,一般像博客园这种记住登录状态的才会适合

学习过程中有遇到疑问的,可以加selenium(java) QQ群交流:631646987

Selenium+Java自动化之如何优雅绕过验证码的更多相关文章

  1. Selenium Java 自动化 介绍及开发工具的使用(一)

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium2为基础,目前selenium3本人没做过研 ...

  2. 『心善渊』Selenium3.0基础 — 21、Selenium实现绕过验证码进行登陆

    目录 1.验证码问题 2.处理验证码的方法 3.Selenium绕过验证码登陆的实现 4.总结 5.补充练习 1.验证码问题 对于Web应用来说,大部分的系统在用户登录时,都要求用户输入验证码.验证码 ...

  3. selenium+java破解极验滑动验证码的示例代码

    转自: https://www.jianshu.com/p/1466f1ba3275 selenium+java破解极验滑动验证码 卧颜沉默 关注 2017.08.15 20:07* 字数 3085  ...

  4. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  5. Selenium Web 自动化 - Selenium(Java)环境搭建

    Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/j ...

  6. Python Selenium Cookie 绕过验证码实现登录

    Python Selenium Cookie 绕过验证码实现登录 之前介绍过博客园的通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1. ...

  7. python接口自动化(Cookie_绕过验证码登录)

     python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...

  8. python+selenium基础篇,cookie绕过验证码小案例

    1.绕过验证码有许许多多的方法,笔者在此介绍其中的一个小方法,原理其实就是获取已登陆了之后的凭证(会话保存在本地的cookie中)再打开另一个页面的使用 2.F12(浏览器开发者调试工具)可以查看的需 ...

  9. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

随机推荐

  1. 062、如何使用flannel host-gw backend(2019-04-02 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7457653.html   flannel 支持多种backend,前面学习的是 vxlan backend ,host- ...

  2. 实惠VPS推荐

    1. Topmain 2. Virmach 3. BanwagonHost  [备用地址1] [备用地址2] 4. HiFormance  (跑路) 5. my.hosteons.com 6. . 以 ...

  3. 解决XP系统桌面图标蓝底

    方法1:在桌面上点击右键,在"排列图标"里去掉"锁定桌面的web项目"的勾. 方法2:右键点击 的电脑 -- 属性 -- 高级 -- 点击"性能&qu ...

  4. JS创建对象之稳妥构造函数模式

    所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象 function Person(name, age, job) { // 创建要返回的对象 var o = new Object() ...

  5. Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)

    SQL语句类似下面这样:(此方法仅适用于5.0.0<mysql<5.6.6的版本) SELECT field FROM table WHERE id > 0 ORDER BY id ...

  6. thymeleaf 传参到js的onclick事件中

    html: <img th:onclick="'javascript:imgClick(\''+${card.id}+'\',\''+${card.name}+'\');'" ...

  7. mvc 导出execl

    mvc导出execl 必须是get方法才可以  也不能使用ajax function ComplaintsExport() { var serial = $("form").ser ...

  8. java 通过域名获取ip

    1. java InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com"); 2. nslookup

  9. eslint 关于CRLF或者LF报错

    在拉取项目代码时,如果有eslint代码校验,但是本地打开会有于CRLF或者LF报错报错,那么怎么处理呢? git有个自动转换换行符功能,在文件commit时会自动转换换行符格式: 不想使用,也可以通 ...

  10. Kafka架构简介

    一.kafka的架构 1.Broker kafka集群包含一个或者多个服务器,这种服务器就叫做Broker 2.Topic 每条发布到kafka集群的消息都有一个类别,这个类别就叫做Topic(逻辑上 ...