Эх сурвалжийг харах

Override X-Requested-With header value in WebView requests (closes #6781)

arkon 3 жил өмнө
parent
commit
996f770935

+ 18 - 0
app/src/main/java/eu/kanade/tachiyomi/App.kt

@@ -32,6 +32,7 @@ import eu.kanade.tachiyomi.network.NetworkHelper
 import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate
 import eu.kanade.tachiyomi.util.preference.asImmediateFlow
 import eu.kanade.tachiyomi.util.system.AuthenticatorUtil
+import eu.kanade.tachiyomi.util.system.WebViewUtil
 import eu.kanade.tachiyomi.util.system.animatorDurationScale
 import eu.kanade.tachiyomi.util.system.logcat
 import eu.kanade.tachiyomi.util.system.notification
@@ -148,6 +149,23 @@ open class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
         }
     }
 
+    override fun getPackageName(): String {
+        try {
+            // Override the value passed as X-Requested-With in WebView requests
+            val stackTrace = Thread.currentThread().stackTrace
+            for (element in stackTrace) {
+                if ("org.chromium.base.BuildInfo".equals(element.className, ignoreCase = true)) {
+                    if ("getAll".equals(element.methodName, ignoreCase = true)) {
+                        return WebViewUtil.SPOOF_PACKAGE_NAME
+                    }
+                    break
+                }
+            }
+        } catch (e: Exception) {
+        }
+        return super.getPackageName()
+    }
+
     protected open fun setupAcra() {
         if (BuildConfig.FLAVOR != "dev") {
             initAcra {

+ 0 - 1
app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt

@@ -101,7 +101,6 @@ class CloudflareInterceptor(private val context: Context) : Interceptor {
 
         val origRequestUrl = request.url.toString()
         val headers = request.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" }.toMutableMap()
-        headers["X-Requested-With"] = WebViewUtil.REQUESTED_WITH
 
         executor.execute {
             val webview = WebView(context)

+ 0 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt

@@ -105,7 +105,6 @@ class WebViewActivity : BaseActivity() {
                 headers = source.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" }.toMutableMap()
                 binding.webview.settings.userAgentString = source.headers["User-Agent"]
             }
-            headers["X-Requested-With"] = WebViewUtil.REQUESTED_WITH
 
             supportActionBar?.subtitle = url
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt

@@ -9,7 +9,7 @@ import android.webkit.WebView
 import logcat.LogPriority
 
 object WebViewUtil {
-    const val REQUESTED_WITH = "com.android.browser"
+    const val SPOOF_PACKAGE_NAME = "com.android.chrome"
 
     const val MINIMUM_WEBVIEW_VERSION = 95