parent
ff8b61ce59
commit
6b9115a327
@ -1,7 +1,11 @@
|
|||||||
ext {
|
ext {
|
||||||
extName = 'Mangahere'
|
extName = 'Mangahere'
|
||||||
extClass = '.Mangahere'
|
extClass = '.Mangahere'
|
||||||
extVersionCode = 19
|
extVersionCode = 20
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":lib:cookieinterceptor"))
|
||||||
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package eu.kanade.tachiyomi.extension.en.mangahere
|
package eu.kanade.tachiyomi.extension.en.mangahere
|
||||||
|
|
||||||
import app.cash.quickjs.QuickJs
|
import app.cash.quickjs.QuickJs
|
||||||
|
import eu.kanade.tachiyomi.lib.cookieinterceptor.CookieInterceptor
|
||||||
import eu.kanade.tachiyomi.network.GET
|
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.Filter
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
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.model.SManga
|
||||||
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
||||||
import eu.kanade.tachiyomi.util.asJsoup
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
import okhttp3.Cookie
|
|
||||||
import okhttp3.CookieJar
|
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.HttpUrl
|
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
@ -35,27 +34,30 @@ class Mangahere : ParsedHttpSource() {
|
|||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = super.headersBuilder()
|
||||||
.add("Referer", baseUrl)
|
.set("Referer", "$baseUrl/")
|
||||||
|
.set("Cache-Control", "no-cache")
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
private val cookieInterceptor = CookieInterceptor(
|
||||||
.cookieJar(
|
baseUrl.substringAfter("://"),
|
||||||
object : CookieJar {
|
listOf(
|
||||||
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {}
|
"isAdult" to "1",
|
||||||
override fun loadForRequest(url: HttpUrl): MutableList<Cookie> {
|
),
|
||||||
return ArrayList<Cookie>().apply {
|
|
||||||
add(
|
|
||||||
Cookie.Builder()
|
|
||||||
.domain("www.mangahere.cc")
|
|
||||||
.path("/")
|
|
||||||
.name("isAdult")
|
|
||||||
.value("1")
|
|
||||||
.build(),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
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()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = ".manga-list-1-list li"
|
override fun popularMangaSelector() = ".manga-list-1-list li"
|
||||||
@ -277,7 +279,7 @@ class Mangahere : ParsedHttpSource() {
|
|||||||
.addHeader("X-Requested-With", "XMLHttpRequest")
|
.addHeader("X-Requested-With", "XMLHttpRequest")
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val response = client.newCall(request).execute()
|
val response = notRateLimitClient.newCall(request).execute()
|
||||||
responseText = response.body.string()
|
responseText = response.body.string()
|
||||||
|
|
||||||
if (responseText.isNotEmpty()) {
|
if (responseText.isNotEmpty()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user