diff --git a/src/en/hiperdex/build.gradle b/src/en/hiperdex/build.gradle index 3c1ead33c..2e48f3e7c 100644 --- a/src/en/hiperdex/build.gradle +++ b/src/en/hiperdex/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Hiperdex' themePkg = 'madara' baseUrl = 'https://hiperdex.com' - overrideVersionCode = 22 + overrideVersionCode = 23 isNsfw = true } diff --git a/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/ClearanceInterceptor.kt b/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/ClearanceInterceptor.kt new file mode 100644 index 000000000..dc1cd1368 --- /dev/null +++ b/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/ClearanceInterceptor.kt @@ -0,0 +1,45 @@ +package eu.kanade.tachiyomi.extension.en.hiperdex + +import okhttp3.Interceptor +import okhttp3.Response + +class ClearanceInterceptor : Interceptor { + + override fun intercept(chain: Interceptor.Chain): Response { + val request = chain.request() + val hasClearanceCookie = request.headers("Cookie").any { cookieHeader -> + cookieHeader.split(";").any { cookie -> + cookie.trim().startsWith("$COOKIE_NAME=") + } + } + + if (hasClearanceCookie) return chain.proceed(request) + + val response = chain.proceed(request) + if (response.code == 403 && response.header(CF_RAY_HEADER) != null) { + val hasClearanceInResponse = response.headers("Set-Cookie").any { cookieHeader -> + cookieHeader.split(";").any { cookie -> + cookie.trim().startsWith("$COOKIE_NAME=") + } + } + + if (hasClearanceInResponse) return response + + val newResponse = response.newBuilder() + .header( + "Set-Cookie", + "$COOKIE_NAME=; Path=/; Domain=${request.url.host}", + ) + .body(response.body) + .build() + + return newResponse + } + return response + } + + companion object { + private const val COOKIE_NAME = "cf_clearance" + private const val CF_RAY_HEADER = "cf-ray" + } +} diff --git a/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt b/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt index b4cdcf301..24b978a28 100644 --- a/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt +++ b/src/en/hiperdex/src/eu/kanade/tachiyomi/extension/en/hiperdex/Hiperdex.kt @@ -37,6 +37,7 @@ class Hiperdex : override val baseUrl by lazy { getPrefBaseUrl() } override val client = super.client.newBuilder() + .addNetworkInterceptor(ClearanceInterceptor()) .setRandomUserAgent( preferences.getPrefUAType(), preferences.getPrefCustomUA(), @@ -44,7 +45,7 @@ class Hiperdex : .rateLimit(3) .build() - override val useLoadMoreRequest = LoadMoreStrategy.Never + override val useLoadMoreRequest = LoadMoreStrategy.Always override fun setupPreferenceScreen(screen: PreferenceScreen) { EditTextPreference(screen.context).apply {