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; + } + } }