From c81e8749b6d5216569947ec9876cb5a1945f6f1e Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 28 Jun 2023 13:27:26 +0300 Subject: [PATCH] Update parsers and headers processing --- .idea/.gitignore | 1 + app/build.gradle | 6 ++-- .../kotatsu/browser/BrowserActivity.kt | 3 +- .../browser/cloudflare/CloudFlareActivity.kt | 4 +-- .../core/network/CommonHeadersInterceptor.kt | 31 +++---------------- .../sources/auth/SourceAuthActivity.kt | 5 ++- 6 files changed, 16 insertions(+), 34 deletions(-) diff --git a/.idea/.gitignore b/.idea/.gitignore index 26d33521a..9f674b306 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -1,3 +1,4 @@ # Default ignored files /shelf/ /workspace.xml +/migrations.xml diff --git a/app/build.gradle b/app/build.gradle index 609a9776a..547d8a120 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 33 - versionCode 558 - versionName '5.3.1' + versionCode 559 + versionName '5.3.2' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -79,7 +79,7 @@ afterEvaluate { } dependencies { //noinspection GradleDependency - implementation('com.github.KotatsuApp:kotatsu-parsers:b8f0ea4690') { + implementation('com.github.KotatsuApp:kotatsu-parsers:92bfc7e9fa') { exclude group: 'org.json', module: 'json' } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt index f7e85e129..832c4679f 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/browser/BrowserActivity.kt @@ -17,6 +17,7 @@ import org.koitharu.kotatsu.core.network.CommonHeadersInterceptor import org.koitharu.kotatsu.core.ui.BaseActivity import org.koitharu.kotatsu.core.util.ext.catchingWebViewUnavailability import org.koitharu.kotatsu.databinding.ActivityBrowserBinding +import org.koitharu.kotatsu.parsers.network.UserAgents import com.google.android.material.R as materialR @SuppressLint("SetJavaScriptEnabled") @@ -35,7 +36,7 @@ class BrowserActivity : BaseActivity(), BrowserCallback } with(viewBinding.webView.settings) { javaScriptEnabled = true - userAgentString = CommonHeadersInterceptor.userAgentChrome + userAgentString = UserAgents.CHROME_MOBILE } CookieManager.getInstance().setAcceptThirdPartyCookies(viewBinding.webView, true) viewBinding.webView.webViewClient = BrowserClient(this) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt index 51d29fc9f..8dba17b23 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/browser/cloudflare/CloudFlareActivity.kt @@ -24,6 +24,7 @@ import org.koitharu.kotatsu.core.ui.BaseActivity import org.koitharu.kotatsu.core.util.TaggedActivityResult import org.koitharu.kotatsu.core.util.ext.catchingWebViewUnavailability import org.koitharu.kotatsu.databinding.ActivityBrowserBinding +import org.koitharu.kotatsu.parsers.network.UserAgents import javax.inject.Inject import com.google.android.material.R as materialR @@ -49,10 +50,9 @@ class CloudFlareActivity : BaseActivity(), CloudFlareCal val url = intent?.dataString.orEmpty() with(viewBinding.webView.settings) { javaScriptEnabled = true - cacheMode = WebSettings.LOAD_DEFAULT domStorageEnabled = true databaseEnabled = true - userAgentString = intent?.getStringExtra(ARG_UA) ?: CommonHeadersInterceptor.userAgentFallback + userAgentString = intent?.getStringExtra(ARG_UA) ?: UserAgents.CHROME_MOBILE } viewBinding.webView.webViewClient = CloudFlareClient(cookieJar, this, url) onBackPressedCallback = WebViewBackPressedCallback(viewBinding.webView).also { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/network/CommonHeadersInterceptor.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/network/CommonHeadersInterceptor.kt index 979dcd7f2..b17c0e789 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/network/CommonHeadersInterceptor.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/network/CommonHeadersInterceptor.kt @@ -1,6 +1,5 @@ package org.koitharu.kotatsu.core.network -import android.os.Build import android.util.Log import dagger.Lazy import okhttp3.Headers @@ -10,11 +9,11 @@ import okhttp3.Response import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.parser.RemoteMangaRepository -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.util.mergeWith import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.network.UserAgents +import org.koitharu.kotatsu.parsers.util.mergeWith import java.net.IDN -import java.util.Locale import javax.inject.Inject import javax.inject.Singleton @@ -39,7 +38,7 @@ class CommonHeadersInterceptor @Inject constructor( headersBuilder.mergeWith(it, replaceExisting = false) } if (headersBuilder[CommonHeaders.USER_AGENT] == null) { - headersBuilder[CommonHeaders.USER_AGENT] = userAgentFallback + headersBuilder[CommonHeaders.USER_AGENT] = UserAgents.CHROME_MOBILE } if (headersBuilder[CommonHeaders.REFERER] == null && repository != null) { val idn = IDN.toASCII(repository.domain) @@ -62,26 +61,4 @@ class CommonHeadersInterceptor @Inject constructor( override fun request(): Request = request } - - companion object { - - val userAgentFallback - get() = "Kotatsu/%s (Android %s; %s; %s %s; %s)".format( - BuildConfig.VERSION_NAME, - Build.VERSION.RELEASE, - Build.MODEL, - Build.BRAND, - Build.DEVICE, - Locale.getDefault().language, - ) - - val userAgentChrome - get() = ( - "Mozilla/5.0 (Linux; Android %s; %s) AppleWebKit/537.36 (KHTML, like Gecko) " + - "Chrome/100.0.4896.127 Mobile Safari/537.36" - ).format( - Build.VERSION.RELEASE, - Build.MODEL, - ) - } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt index 42cef7ea6..150e71faa 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/auth/SourceAuthActivity.kt @@ -28,6 +28,7 @@ import org.koitharu.kotatsu.core.util.ext.getSerializableExtraCompat import org.koitharu.kotatsu.databinding.ActivityBrowserBinding import org.koitharu.kotatsu.parsers.MangaParserAuthProvider import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.network.UserAgents import javax.inject.Inject import com.google.android.material.R as materialR @@ -67,7 +68,9 @@ class SourceAuthActivity : BaseActivity(), BrowserCallba } with(viewBinding.webView.settings) { javaScriptEnabled = true - userAgentString = CommonHeadersInterceptor.userAgentChrome + domStorageEnabled = true + databaseEnabled = true + userAgentString = UserAgents.CHROME_MOBILE } CookieManager.getInstance().setAcceptThirdPartyCookies(viewBinding.webView, true) viewBinding.webView.webViewClient = BrowserClient(this)