selenium 使用
maven
<!-- seleium -->
<properties>
<selenium.version>4.18.1</selenium.version>
</properties>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
demo Code
package com.dsp.business.service;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.dsp.common.base.BaseConstant;
import org.apache.commons.lang3.time.DateUtils;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.HasDevTools;
import org.openqa.selenium.devtools.v122.network.Network;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Service
public class LookStudioService {
public static String REPORT_URL = "https://www.google.com";
public static String INTERCEPT_URL_SUFFIX = "xxx";
String loginURl = "配置 cookie 前";
public String testDomain() {
String oldCookie = BaseConstant.LOOKERSTUDIO_COOKIE;
String rootPath = "driver 位置";
System.setProperty("webdriver.chrome.driver", rootPath + " driver 名称");
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
options.addArguments("--silent");
options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
options.addArguments("--incognito");
options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--disable-gpu");
WebDriver driver = new ChromeDriver(options);
try {
driver.get(loginURl);
WebDriver.Options manage = driver.manage();
JSONArray jsonArray = JSON.parseArray(oldCookie);
for (Object item : jsonArray) {
JSONObject jsonObject = (JSONObject) item;
String name = jsonObject.getString("name");
String value = jsonObject.getString("value");
String path = jsonObject.getString("path");
String domain = jsonObject.getString("domain");
boolean secure = jsonObject.getBoolean("secure");
Date date = DateUtils.addDays(new Date(), 1);
Cookie cookie = new Cookie(name, value, domain, path, date, secure);
manage.addCookie(cookie);
}
DevTools devTool = ((HasDevTools) driver).getDevTools();
devTool.createSession();
HashMap<String, Object> urlHeaders = new HashMap<>();
devTool.addListener(Network.requestWillBeSent(), request -> {
if (request.getRequest().getUrl().contains(INTERCEPT_URL_SUFFIX)) {
urlHeaders.put(request.getRequest().getUrl(), request.getRequest().getHeaders());
System.out.println(request.getRequest().getTrustTokenParams());
}
});
HashMap<String, Object> urlResponse = new HashMap<>();
devTool.addListener(Network.responseReceived(), response -> {
urlResponse.put(response.getResponse().getUrl(), response.getResponse().getHeaders());
});
devTool.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
driver.get(REPORT_URL);
TimeUnit.SECONDS.sleep(5);
Set<Cookie> cookies = driver.manage().getCookies();
for (Cookie cookie : cookies) {
System.out.println("cookie________________________" + cookie);
}
System.out.println("urlHeaders________________________"+urlHeaders);‘
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
driver.quit();
}
return "test";
}
}