|
|
|
|
@@ -14,6 +14,7 @@ import java.net.http.HttpClient;
|
|
|
|
|
import java.net.http.HttpRequest;
|
|
|
|
|
import java.net.http.HttpResponse;
|
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
|
import java.time.Duration;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
@@ -30,8 +31,10 @@ public class WebSearchService {
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(WebSearchService.class);
|
|
|
|
|
private static final int MAX_RESULTS = 5;
|
|
|
|
|
|
|
|
|
|
private static final Duration REQ_TIMEOUT = Duration.ofSeconds(15);
|
|
|
|
|
private static final HttpClient HTTP = HttpClient.newBuilder()
|
|
|
|
|
.followRedirects(HttpClient.Redirect.NORMAL)
|
|
|
|
|
.connectTimeout(Duration.ofSeconds(5))
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
private static final Pattern DDG_RESULT = Pattern.compile(
|
|
|
|
|
@@ -74,6 +77,7 @@ public class WebSearchService {
|
|
|
|
|
String url = "https://openapi.naver.com/v1/search/webkr.json?query=" + encoded + "&display=30";
|
|
|
|
|
HttpRequest req = HttpRequest.newBuilder()
|
|
|
|
|
.uri(URI.create(url))
|
|
|
|
|
.timeout(REQ_TIMEOUT)
|
|
|
|
|
.header("X-Naver-Client-Id", naverClientId)
|
|
|
|
|
.header("X-Naver-Client-Secret", naverClientSecret)
|
|
|
|
|
.GET()
|
|
|
|
|
@@ -104,6 +108,7 @@ public class WebSearchService {
|
|
|
|
|
String url = "https://html.duckduckgo.com/html/?q=" + encoded;
|
|
|
|
|
HttpRequest req = HttpRequest.newBuilder()
|
|
|
|
|
.uri(URI.create(url))
|
|
|
|
|
.timeout(REQ_TIMEOUT)
|
|
|
|
|
.header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36")
|
|
|
|
|
.header("Accept", "text/html,application/xhtml+xml")
|
|
|
|
|
.header("Accept-Language", "ko-KR,ko;q=0.9")
|
|
|
|
|
|