QQBot/src/main/java/com/yutou/qqbot/utlis/WebClient.java

117 lines
3.7 KiB
Java
Raw Normal View History

package com.yutou.qqbot.utlis;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class WebClient {
private WebDriver driver;
private static WebClient instance;
public static WebClient getInstance() {
if (instance == null || instance.driver == null) {
instance = new WebClient();
}
return instance;
}
public WebDriver getWebDriver() {
if (driver == null) {
driver = new ChromeDriver(getOptions());
}
return driver;
}
public void quit() {
driver.quit();
driver = null;
}
private WebClient() {
2023-03-18 13:41:47 +08:00
//System.setProperty("webdriver.http.factory", "jdk-http-client");
System.setProperty("webdriver.chrome.driver",
ConfigTools.load(ConfigTools.CONFIG, "chrome", String.class));
2022-05-05 09:31:30 +08:00
// System.setProperty("webdriver.chrome.whitelistedIps", "");
// java.util.logging.Logger.getLogger("org.openqa.selenium").setLevel(Level.OFF);
}
public static List<Cookie> loadCookie(JSONArray array) {
List<Cookie> list = new ArrayList<>();
for (Object o : array) {
JSONObject json = (JSONObject) o;
boolean containsDate = json.containsKey("expirationDate");
long t = 0;
if (containsDate) {
String _time = json.getString("expirationDate");
if (_time.contains(".")) {
_time = _time.split("\\.")[0];
}
t = Long.parseLong(_time);
} else {
t = (System.currentTimeMillis()) / 1000;
}
t *= 1000;
Cookie cookie = new Cookie(json.getString("name"),
json.getString("value"),
json.getString("domain"),
json.getString("path"),
new Date(t),
json.getBooleanValue("secure"),
json.getBooleanValue("httpOnly")
);
list.add(cookie);
}
return list;
}
2022-05-05 09:31:30 +08:00
static boolean headless = false;
public void setHeadless(boolean headless) {
WebClient.headless = headless;
2022-04-08 02:26:29 +08:00
}
2022-05-05 09:31:30 +08:00
public ChromeOptions getOptions() {
ChromeOptions options = new ChromeOptions();
2023-03-18 13:41:47 +08:00
options.addArguments("--remote-allow-origins=*");
2022-05-05 09:31:30 +08:00
// options.addArguments("--disable-gpu");
// options.addArguments("blink-settings=imagesEnabled=false");
2022-04-28 08:23:12 +08:00
String headless = RedisTools.get("chromedrive_headless");
2022-05-05 09:31:30 +08:00
String proxy = RedisTools.get("chromedrive_proxy");
if ("true".equals(proxy)) {
String url = "http://127.0.0.1:7890";
Proxy _proxy = new Proxy();
_proxy.setHttpProxy(url);
_proxy.setSslProxy(url);
options.setCapability(CapabilityType.PROXY, _proxy);
2022-04-28 08:23:12 +08:00
}
2022-05-05 09:31:30 +08:00
if ("true".equals(headless) || WebClient.headless) {
2022-03-11 21:07:06 +08:00
options.addArguments("--headless");
}
options.addArguments("--no-sandbox");
2022-05-05 09:31:30 +08:00
// options.addArguments("--incognito");
options.addArguments("--disable-plugins");
options.addArguments("--lang=zh-CN");
return options;
}
public static void main(String[] args) {
WebDriver driver1 = getInstance().getWebDriver();
driver1.get("https://www.tsdm39.net/forum.php");
}
}