From 6b9115a32730c5b67a51210a3b2eb5ca211f48c6 Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Fri, 30 Aug 2024 06:13:12 -0500 Subject: [PATCH] MangaHere: Fix http 500 (#4830) idk --- src/en/mangahere/build.gradle | 6 ++- .../extension/en/mangahere/Mangahere.kt | 50 ++++++++++--------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/en/mangahere/build.gradle b/src/en/mangahere/build.gradle index 10a8a9730..6be2dfa34 100644 --- a/src/en/mangahere/build.gradle +++ b/src/en/mangahere/build.gradle @@ -1,7 +1,11 @@ ext { extName = 'Mangahere' extClass = '.Mangahere' - extVersionCode = 19 + extVersionCode = 20 } apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(":lib:cookieinterceptor")) +} diff --git a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt index 61d1f6d13..138cc4b13 100644 --- a/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt +++ b/src/en/mangahere/src/eu/kanade/tachiyomi/extension/en/mangahere/Mangahere.kt @@ -1,7 +1,9 @@ package eu.kanade.tachiyomi.extension.en.mangahere import app.cash.quickjs.QuickJs +import eu.kanade.tachiyomi.lib.cookieinterceptor.CookieInterceptor import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.interceptor.rateLimitHost import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.Page @@ -9,10 +11,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.Cookie -import okhttp3.CookieJar import okhttp3.Headers -import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request @@ -35,27 +34,30 @@ class Mangahere : ParsedHttpSource() { override val supportsLatest = true - override fun headersBuilder(): Headers.Builder = Headers.Builder() - .add("Referer", baseUrl) + override fun headersBuilder(): Headers.Builder = super.headersBuilder() + .set("Referer", "$baseUrl/") + .set("Cache-Control", "no-cache") - override val client: OkHttpClient = super.client.newBuilder() - .cookieJar( - object : CookieJar { - override fun saveFromResponse(url: HttpUrl, cookies: List) {} - override fun loadForRequest(url: HttpUrl): MutableList { - return ArrayList().apply { - add( - Cookie.Builder() - .domain("www.mangahere.cc") - .path("/") - .name("isAdult") - .value("1") - .build(), - ) - } - } - }, - ) + private val cookieInterceptor = CookieInterceptor( + baseUrl.substringAfter("://"), + listOf( + "isAdult" to "1", + ), + ) + + private val notRateLimitClient: OkHttpClient = network.cloudflareClient.newBuilder() + .addNetworkInterceptor(cookieInterceptor) + .addNetworkInterceptor { chain -> + val newRequest = chain.request().newBuilder() + .header("Cache-Control", "no-cache") + .removeHeader("If-Modified-Since") + .build() + chain.proceed(newRequest) + } + .build() + + override val client: OkHttpClient = notRateLimitClient.newBuilder() + .rateLimitHost(baseUrl.toHttpUrl(), 1, 2) .build() override fun popularMangaSelector() = ".manga-list-1-list li" @@ -277,7 +279,7 @@ class Mangahere : ParsedHttpSource() { .addHeader("X-Requested-With", "XMLHttpRequest") .build() - val response = client.newCall(request).execute() + val response = notRateLimitClient.newCall(request).execute() responseText = response.body.string() if (responseText.isNotEmpty()) {