update selector (#3457)

* JapScan: update selector

* hello mr japscan, hope you are having fun
This commit is contained in:
AwkwardPeak7 2024-06-08 10:12:47 +05:00 committed by Draff
parent 9945575661
commit eb6b5d39d7
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 28 additions and 3 deletions

View File

@ -1,7 +1,7 @@
ext { ext {
extName = 'Japscan' extName = 'Japscan'
extClass = '.Japscan' extClass = '.Japscan'
extVersionCode = 46 extVersionCode = 47
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View File

@ -5,9 +5,11 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.util.Base64
import android.view.View import android.view.View
import android.webkit.JavascriptInterface import android.webkit.JavascriptInterface
import android.webkit.WebView import android.webkit.WebView
import eu.kanade.tachiyomi.extension.R
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.network.interceptor.rateLimit
@ -35,10 +37,14 @@ import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
import java.security.MessageDigest
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
import java.util.concurrent.CountDownLatch import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.crypto.Cipher
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec
class Japscan : ConfigurableSource, ParsedHttpSource() { class Japscan : ConfigurableSource, ParsedHttpSource() {
@ -230,12 +236,12 @@ class Japscan : ConfigurableSource, ParsedHttpSource() {
val interfaceName = randomString() val interfaceName = randomString()
val zjsElement = document.selectFirst("script[src*=/zjs/]") val zjsElement = document.selectFirst("script[src*=/zjs/]")
?: throw Exception("ZJS not found") ?: throw Exception("ZJS not found")
val dataElement = document.selectFirst("[id^=data]") val dataElement = document.select(selector("dLqEgOqeqp/72OXDYKI5lA=="))
?: throw Exception("Chapter data not found") ?: throw Exception("Chapter data not found")
val minDoc = Document.createShell(document.location()) val minDoc = Document.createShell(document.location())
val minDocBody = minDoc.body() val minDocBody = minDoc.body()
minDocBody.appendChild(dataElement) minDocBody.appendChildren(dataElement)
minDocBody.append( minDocBody.append(
""" """
<script> <script>
@ -290,6 +296,25 @@ class Japscan : ConfigurableSource, ParsedHttpSource() {
} }
} }
private fun selector(encrypted: String): String {
val secretKey = run {
val crypto = ((R.mipmap.ic_launcher ushr 87895464) * (456123 ushr 42) - 16 / 4 * -3)
.toString()
.toByteArray(Charsets.UTF_32BE)
MessageDigest.getInstance("SHA-1")
.digest(crypto)
.take(16)
}.toByteArray()
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
val key = SecretKeySpec(secretKey, "AES")
val iv = IvParameterSpec(Base64.decode("totally not some plaintxt".toByteArray(), Base64.DEFAULT))
cipher.init(Cipher.DECRYPT_MODE, key, iv)
return String(cipher.doFinal(Base64.decode(encrypted, Base64.DEFAULT)))
}
override fun imageUrlParse(document: Document): String = "" override fun imageUrlParse(document: Document): String = ""
// Filters // Filters