From 85b24891be643bef9879abafae818cf9eed140e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Fri, 31 Jul 2020 23:16:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8htmlunit=E8=8E=B7=E5=8F=96js?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=90=8E=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 23 +++++++++++++++++++ .../java/cn/celess/blog/util/HttpUtil.java | 21 +++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/pom.xml b/pom.xml index b59af17..0be1982 100644 --- a/pom.xml +++ b/pom.xml @@ -159,9 +159,18 @@ org.jetbrains.kotlin kotlin-stdlib 1.3.72 + compile + + net.sourceforge.htmlunit + htmlunit + 2.42.0 + + + + @@ -190,6 +199,20 @@ + + org.jetbrains.kotlin + kotlin-maven-plugin + 1.3.72 + + + compile + process-sources + + compile + + + + diff --git a/src/main/java/cn/celess/blog/util/HttpUtil.java b/src/main/java/cn/celess/blog/util/HttpUtil.java index b34b5e6..8dcc7fb 100644 --- a/src/main/java/cn/celess/blog/util/HttpUtil.java +++ b/src/main/java/cn/celess/blog/util/HttpUtil.java @@ -1,10 +1,15 @@ package cn.celess.blog.util; +import com.gargoylesoftware.htmlunit.BrowserVersion; +import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; +import com.gargoylesoftware.htmlunit.WebClient; +import com.gargoylesoftware.htmlunit.html.HtmlPage; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.io.IOException; +import java.net.MalformedURLException; import java.util.Objects; /** @@ -62,4 +67,20 @@ public class HttpUtil { } } + + public static String getAfterRendering(String url) { + try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) { + webClient.getOptions().setCssEnabled(false); + webClient.getOptions().setJavaScriptEnabled(true); + webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); + webClient.getOptions().setThrowExceptionOnScriptError(false); + webClient.getOptions().setDownloadImages(false); + webClient.getOptions().setActiveXNative(false); + webClient.setAjaxController(new NicelyResynchronizingAjaxController()); + final HtmlPage page = webClient.getPage(url); + return page.asXml(); + } catch (IOException e) { + return null; + } + } }