java+selenium(无头模式)+Cookie跳过二维码、验证码登录
学习记录
1.介绍
1):selenium无头模式可以在不打开游览器的情况下,进行数据测试及数据爬取;
2):cookie登录能跳过二维码、验证码的阻拦实现登录
2.注意
1):查看自己谷歌版本并下载对应chromedriver插件:http://npm.taobao.org/mirrors/chromedriver/
2):我的插件存放路径

3):如想使用无头模式尽量使用最新的pom,因为低版本的pom不支持无头模式,我的pom如下:
<!--selenium依赖文件-->
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-htmlunit-driver</artifactId>
<version>2.52.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
代码如下:
@Test
public void main() throws Exception {
System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
/**
* 启动无头模式
*/
//初始化一个谷歌浏览器实例,实例名称叫driver
ChromeOptions chromeOptions = new ChromeOptions();
//设置 chrome 的无头模式
chromeOptions.setHeadless(Boolean.TRUE);
//启动一个 chrome 实例
WebDriver driver = new ChromeDriver(chromeOptions);
//初始化一个谷歌浏览器实例,实例名称叫driver
// get()打开一个站点,也就是打开登录页面
driver.get("http://xxx");
logger.info("=========getCookies:" + driver.manage().getCookies() + "\n");//获取cookie
Thread.sleep(500);
/**
* Cookie注入,每个网址的cookieId可能都不同需自行甄别,或者可以下载抓包工具找到cookieid,软件名:Fiddler
*/
Cookie c1 = new Cookie("PHPSESSID", "xxx");
Cookie c2 = new Cookie("ADMIN", "xxx");
driver.manage().addCookie(c1);
driver.manage().addCookie(c2);
driver.navigate().refresh();
//cookie注入后请求登录成功后需要展示的页面就自动进去了
driver.get("http://xxxx");
}
本文介绍了如何使用Java和Selenium的无头模式,通过设置Cookie来绕过二维码和验证码,实现自动登录的过程。重点提到了需要匹配正确的Chrome版本与chromedriver,并给出了相关配置和POM版本的建议。
1297

被折叠的 条评论
为什么被折叠?



