Skip to content

Commit 2e8cbcf

Browse files
Merge branch 'keiyoushi:main' into main
2 parents e762959 + 61b80e3 commit 2e8cbcf

File tree

2 files changed

+43
-7
lines changed

2 files changed

+43
-7
lines changed
Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,47 @@
11
package eu.kanade.tachiyomi.extension.id.komiktap
22

3+
import app.cash.quickjs.QuickJs
34
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
4-
import eu.kanade.tachiyomi.network.interceptor.rateLimit
5-
import okhttp3.OkHttpClient
5+
import eu.kanade.tachiyomi.util.asJsoup
6+
import okhttp3.Cookie
7+
import okhttp3.Interceptor
8+
import okhttp3.Response
9+
import java.io.IOException
610

711
class Komiktap : MangaThemesia("Komiktap", "https://komiktap.me", "id") {
8-
override val client: OkHttpClient = super.client.newBuilder()
9-
.rateLimit(4)
10-
.build()
12+
override val client = super.client.newBuilder().addInterceptor(::sucuriInterceptor).build()
13+
14+
// Taken from es/ManhwasNet
15+
private fun sucuriInterceptor(chain: Interceptor.Chain): Response {
16+
val request = chain.request()
17+
val url = request.url
18+
val response = try {
19+
chain.proceed(request)
20+
} catch (e: Exception) {
21+
// Try to clear cookies and retry
22+
client.cookieJar.saveFromResponse(url, emptyList())
23+
val clearHeaders = request.headers.newBuilder().removeAll("Cookie").build()
24+
chain.proceed(request.newBuilder().headers(clearHeaders).build())
25+
}
26+
if (response.headers["x-sucuri-cache"].isNullOrEmpty() && response.headers["x-sucuri-id"] != null && url.toString().startsWith(baseUrl)) {
27+
val script = response.use { it.asJsoup() }.selectFirst("script")?.data()
28+
29+
if (script != null) {
30+
val patchedScript = script.split("(r)")[0].dropLast(1) + "r=r.replace('document.cookie','cookie');"
31+
QuickJs.create().use {
32+
val result = (it.evaluate(patchedScript) as String)
33+
.replace("location.", "")
34+
.replace("reload();", "")
35+
val sucuriCookie = (it.evaluate(result) as String).split("=", limit = 2)
36+
val cookieName = sucuriCookie.first()
37+
val cookieValue = sucuriCookie.last().replace(";path", "")
38+
client.cookieJar.saveFromResponse(url, listOf(Cookie.parse(url, "$cookieName=$cookieValue")!!))
39+
}
40+
val newResponse = chain.proceed(request)
41+
if (!newResponse.headers["x-sucuri-cache"].isNullOrEmpty()) return newResponse
42+
}
43+
throw IOException("Situs yang dilindungi - Buka di WebView untuk mencoba membuka blokir.")
44+
}
45+
return response
46+
}
1147
}

multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
5555
SingleLang("Infernal Void Scans", "https://void-scans.com", "en", overrideVersionCode = 5),
5656
SingleLang("Kai Scans", "https://kaiscans.com", "en", isNsfw = false),
5757
SingleLang("Kanzenin", "https://kanzenin.info", "id", isNsfw = true, overrideVersionCode = 1),
58-
SingleLang("KataKomik", "https://katakomik.online", "id"),
58+
SingleLang("KataKomik", "https://katakomik.my.id", "id", overrideVersionCode = 1),
5959
SingleLang("King of Shojo", "https://kingofshojo.com", "ar", overrideVersionCode = 1),
6060
SingleLang("Kiryuu", "https://kiryuu.id", "id", overrideVersionCode = 6),
6161
SingleLang("Komik AV", "https://komikav.com", "id", overrideVersionCode = 1),
@@ -68,7 +68,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
6868
SingleLang("KomikMama", "https://komikmama.co", "id", overrideVersionCode = 1),
6969
SingleLang("KomikManhwa", "https://komikmanhwa.me", "id", isNsfw = true),
7070
SingleLang("Komiksan", "https://komiksan.link", "id", overrideVersionCode = 2),
71-
SingleLang("Komiktap", "https://komiktap.me", "id", isNsfw = true),
71+
SingleLang("Komiktap", "https://komiktap.me", "id", isNsfw = true, overrideVersionCode = 1),
7272
SingleLang("Komiku.com", "https://komiku.com", "id", className = "KomikuCom"),
7373
SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1),
7474
SingleLang("KumaPoi", "https://kumapoi.info", "id", isNsfw = true, overrideVersionCode = 3),

0 commit comments

Comments
 (0)