From ffc3693674cb212da292fe08492d068dd2a0f1b9 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sun, 2 Jul 2023 04:06:03 +0800 Subject: [PATCH] Use the same UA for ehRequest and cronetRequest --- .../com/hippo/ehviewer/client/EhRequestBuilder.kt | 2 +- .../spider/Android14CoroutineHttpEngine.kt | 15 +++++++++++++-- .../java/com/hippo/ehviewer/spider/SpiderDen.kt | 6 +----- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt b/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt index 4b14a8479..338b2d810 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.kt @@ -103,6 +103,6 @@ suspend inline fun Call.usingCancellable(crossinline block: suspend Response suspend inline fun Request.execute(block: Response.() -> R) = okHttpClient.newCall(this).executeAsync().use(block) suspend inline fun Request.executeNonCache(crossinline block: suspend Response.() -> R) = nonCacheOkHttpClient.newCall(this).usingCancellable(block) -const val CHROME_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36" +const val CHROME_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" const val CHROME_ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" const val CHROME_ACCEPT_LANGUAGE = "en-US,en;q=0.5" diff --git a/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt b/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt index 26c1c8bf7..751d8b8cc 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt @@ -1,11 +1,16 @@ package com.hippo.ehviewer.spider import com.hippo.ehviewer.EhApplication +import com.hippo.ehviewer.client.CHROME_ACCEPT +import com.hippo.ehviewer.client.CHROME_ACCEPT_LANGUAGE +import com.hippo.ehviewer.client.CHROME_USER_AGENT +import com.hippo.ehviewer.client.EhCookieStore import eu.kanade.tachiyomi.util.system.logcat import io.ktor.utils.io.pool.DirectByteBufferPool import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine +import okhttp3.HttpUrl.Companion.toHttpUrl import okio.Path.Companion.toOkioPath import org.chromium.net.CronetEngine import org.chromium.net.CronetException @@ -72,8 +77,14 @@ class CronetRequest : AutoCloseable { override fun close() = pool.recycle(buffer) } -inline fun cronetRequest(url: String, conf: UrlRequest.Builder.() -> Unit) = CronetRequest().apply { - request = cronetHttpClient.newUrlRequestBuilder(url, callback, cronetHttpClientExecutor).apply(conf).build() +inline fun cronetRequest(url: String, referer: String? = null, conf: UrlRequest.Builder.() -> Unit) = CronetRequest().apply { + request = cronetHttpClient.newUrlRequestBuilder(url, callback, cronetHttpClientExecutor).apply { + addHeader("Cookie", EhCookieStore.getCookieHeader(url.toHttpUrl())) + addHeader("User-Agent", CHROME_USER_AGENT) + addHeader("Accept", CHROME_ACCEPT) + addHeader("Accept-Language", CHROME_ACCEPT_LANGUAGE) + referer?.let { addHeader("Referer", it) } + }.apply(conf).build() } suspend infix fun CronetRequest.awaitBodyFully(consumer: (ByteBuffer) -> Unit) = run { diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt index 6a0ca9737..a0f3abddc 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt @@ -20,7 +20,6 @@ import android.os.Build import android.os.ParcelFileDescriptor import android.os.ParcelFileDescriptor.MODE_READ_WRITE import com.hippo.ehviewer.EhDB -import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhUtils.getSuitableTitle import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.client.ehRequest @@ -36,7 +35,6 @@ import com.hippo.ehviewer.util.sendTo import com.hippo.ehviewer.yorozuya.FileUtils import com.hippo.unifile.UniFile import com.hippo.unifile.openOutputStream -import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.Response import okio.Buffer @@ -132,9 +130,7 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) { notifyProgress: (Long, Long, Int) -> Unit, ): Boolean { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - cronetRequest(url) { - addHeader("Cookie", EhCookieStore.getCookieHeader(url.toHttpUrl())) - referer?.let { addHeader("Referer", it) } + cronetRequest(url, referer) { disableCache() }.execute { info -> val headers = info.allHeaders