From 07599ade3aeb127f643b45e84a6b9ccdb1d0ba6d Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Fri, 27 Feb 2026 13:49:26 -0500 Subject: [PATCH] Fix blank page on cloudflare guard --- .../main/java/exh/ui/login/EhLoginActivity.kt | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/exh/ui/login/EhLoginActivity.kt b/app/src/main/java/exh/ui/login/EhLoginActivity.kt index 16aa4c176..7bcacdaf5 100644 --- a/app/src/main/java/exh/ui/login/EhLoginActivity.kt +++ b/app/src/main/java/exh/ui/login/EhLoginActivity.kt @@ -3,7 +3,6 @@ package exh.ui.login import android.app.Activity import android.content.Context import android.content.Intent -import android.net.Uri import android.os.Build import android.os.Bundle import android.webkit.CookieManager @@ -13,6 +12,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.core.net.toUri import eu.kanade.presentation.webview.EhLoginWebViewScreen import eu.kanade.presentation.webview.components.IgneousDialog import eu.kanade.tachiyomi.R @@ -92,16 +92,32 @@ class EhLoginActivity : BaseActivity() { private fun onPageFinished(view: WebView, url: String, customIgneous: String?) { xLogD(url) - val parsedUrl = Uri.parse(url) + val parsedUrl = url.toUri() if (parsedUrl.host.equals("forums.e-hentai.org", ignoreCase = true)) { - // Hide distracting content - if (!parsedUrl.queryParameterNames.contains(PARAM_SKIP_INJECT)) { - view.evaluateJavascript(HIDE_JS, null) - } - // Check login result + view.evaluateJavascript( + """ + (function() { + let html = document.documentElement.innerHTML; + return html.includes("/cdn-cgi/"); + })(); + """.trimIndent() + ) { result -> + val isCloudflareBlock = result == "true" - if (parsedUrl.getQueryParameter("code")?.toInt() != 0) { - if (checkLoginCookies(url)) view.loadUrl("https://exhentai.org/") + if (isCloudflareBlock) { + xLogD("Cloudflare block detected — skipping logic") + return@evaluateJavascript + } + + // Hide distracting content + if (!parsedUrl.queryParameterNames.contains(PARAM_SKIP_INJECT)) { + view.evaluateJavascript(HIDE_JS, null) + } + // Check login result + + if (parsedUrl.getQueryParameter("code")?.toInt() != 0) { + if (checkLoginCookies(url)) view.loadUrl("https://exhentai.org/") + } } } else if (parsedUrl.host.equals("exhentai.org", ignoreCase = true)) { // At ExHentai, check that everything worked out...